- 1. 远程仓库操作
- 检查保存的远程仓库地址
- 移除远程仓库地址
- 查看远程仓库地址
- 从远程仓库同步分支信息
- 推送到远程仓库
- 2. 分支操作
- 查看本地及远程分支
- 创建新的分支
- 更改当前分支
- 对比分支
- 合并分支
- 删除分支
- 3. 常用组合技
- 一次提交
- 版本回退
- 查看提交记录/版本变更记录
- 在命令行打印时出现乱码
- powershell中输出到文件出现乱码
- 添加、查看、删除远程仓库
- 查看远程仓库的分支更新情况并合并
- 创建一个分支
- 合并分支
- 使文件(夹)与其他分支的一至
1. 远程仓库操作
检查保存的远程仓库地址
1 2 3
| git remote add [name] [ssh-url] # eg: git remote add gitee git@gitee.com:whuls/example.git # git remote add github git@github.com:whuls/example.git
|
移除远程仓库地址
1 2
| git remote rm [name] # eg: git remote rm gitee
|
查看远程仓库地址
1 2 3
| git remote -v # gitee git@gitee.com:whuls/example.git # github git@github.com:whuls/example.git
|
从远程仓库同步分支信息
1 2
| git fetch [name] [branch] # eg: git fetch origin master
|
推送到远程仓库
1 2
| git push [name] [branch] # eg: git push origin master
|
可以为当前的分支设置上传流(upstream
),设置方式如下:
1 2
| git checkout branch1 git branch --set-upstream-to origin/branch1
|
或
1 2
| git checkout branch1 git branch -u origin/branch1
|
设置上传流之后表明确定了当前分支默认关联的远程分支,不需要每次推送(push)时都指定分支,因此推送操作可以简化为:
也可以设置上传流为本地分支,不过好像除了检查同步之外没有别的便利之处。
2. 分支操作
查看本地及远程分支
xxxxxxx是分支所在的版本id,msg是该版本对应的提交信息。
1 2 3 4
| git branch -v -a # branch1 xxxxxxx msg...... # master xxxxxxx msg...... # remotes/origin/master xxxxxxx msg......
|
创建新的分支
1 2
| git branch [local_branch_name] # eg: git branch branch1
|
更改当前分支
1 2
| git checkout [local_branch_name] # eg: git checkout branch1
|
对比分支
1
| git log -p [branch1]..[branch2]
|
两个分支可以是本地分支也可以是远程分支。只有写在后面的分支比前面的分支新,这条命令才会显示对比信息,否则显示为空。
1 2 3 4 5 6 7 8 9 10
| git log -p master..branch1 # commit dca801bdbddb005bac36bf6a296b333952c54dac (HEAD -> linetrack) # Author: whuls <hayzlsls@163.com> # Date: Wed May 5 15:52:54 2021 +0800 #
#
# new file mode 100644 # index 0000000..e69de29
|
合并分支
合并(远程)分支
1 2
| git merge [name]/[branch] # eg: git merge gitee/branch1
|
合并(本地)分支
1 2
| git merge [local_branch_name] # eg: git merge branch1
|
删除分支
删除本地分支
如果branch1与当前分支不同(存在更改),则可以合并后再删除,或者使用强制命令-D
删除远程分支:在push的时候加上--delete
参数或者在分支前加上冒号:
1 2
| git push origin --delete branch1 git push origin :branch1
|
3. 常用组合技
一次提交
1 2 3 4 5
| git remote -v git remote add origin git@gitee.com:whuls/whuls git add . git commit -m "Your message" git push origin
|
版本回退
强制回退到上一个版本、上上个版本…上100个版本。
1 2 3 4 5 6 7
| git reset --hard HEAD^ git reset --hard HEAD^^ # ... git reset --hard HEAD~100
# 或者使用版本号 git reset --hard 54abdcf
|
撤销提交
1 2
| git reset 54abdcf git reset HEAD^
|
二者的区别在于是否强制更改文件内容。使用--hard
参数时会强制改变文件内容,不仅会回退到指定版本,还会把文件也改了,而不指定该参数则只会修改提交内容,不会更改文件。
查看提交记录/版本变更记录
查看提交记录
1 2 3 4 5 6
| # 直接在命令行打印 git log # 简化版 git log --pretty=oneline # 打印到文件 git log > log.txt
|
查看版本变更记录
如果命令太长,在命令行内显示后无法退出,按下q
即可。
在命令行打印时出现乱码
PowerShell | git log 中文乱码问题解决
1 2 3 4 5 6 7
| git config --global core.quotepath false git config --global gui.encoding utf-8 git config --global i18n.commit.encoding utf-8 git config --global i18n.logoutputencoding utf-8 # 以下二者均可 $env:LESSCHARSET='utf-8' $env:LC_ALL='C.UTF-8'
|
1 2 3 4 5
| # cmd set LESSCHARSET=utf-8 # 设置 set LC_ALL=C.UTF-8 set LESSCHARSET # 查看 set LC_ALL
|
或者直接把LESSCHARSET
,LC_ALL
添加到系统环境变量。
powershell中输出到文件出现乱码
在cmd窗口中,设置环境变量后打印在命令行不会出现中文乱码;不设置环境变量时直接输出到文件不会出现中文乱码。
1 2
| set LESSCHARSET=utf-8 git log
|
以上代码的执行结果都不会出现乱码。唯独这该死的powershell啊,无论有没有设置环境变量,输出到文件均会出现乱码😡。
这是由于powershell输出重定向(操作>
)文件编码默认为UTF-16(LE)
,将其改为UTF-8
的方法如下:
1
| git log | Out-File a.txt -Encoding utf-8
|
但是输出的文件编码格式为UTF-8 With BOM
,还是乱码,暂时无法解决。
添加、查看、删除远程仓库
1 2 3
| git remote add origin git@gitee.com:whuls/whuls git remote -v git remote rm origin
|
查看远程仓库的分支更新情况并合并
1 2 3 4
| git fetch origin git branch -v -a git checkout branch1 git merge origin/master
|
创建一个分支
1 2
| git branch branch1 git checkout branch1
|
合并分支
1 2 3
| git branch -v -a git checkout branch1 git merge master
|
使文件(夹)与其他分支的一至
例如在master分支下更新了README.md文件,或更新了docs文件夹的文件,在branch1中要使对应的文件一至,可以使用如下操作:
1 2 3
| git checkout branch1 git checkout master README.md # 文件 git checkout master docs # 文件夹
|
该操作仅仅是将文件或文件内容复制过来,并不会修改版本号之类的东西。