原帖收藏于IT老兵驿站,传递一个IT老兵在凋零前的光和氧。
Git的git-checkout的用法总结。
初衷
git-checkout
是Git
最常用的命令之一,但又是有些复杂的命令,总会感觉有些用不明白,用不明白的原因应该是没有深度地、全面地理解一下,所以要对它好好整理一下。
介绍
checkout
在CVS
和SVN
中都是检出的意思,从版本库检出一个版本,在Git
中就不是这么简单了。手册上是这样介绍的:
1 | git-checkout - Switch branches or restore working tree files |
在Git
里面,checkout
用于切换分支或者恢复工作树的文件。
实例
问题:线上分支出现了一个问题,急需要修复(可以参看Git Flow一章)。
步骤:
- 需要创建一个hotfix分支,参考语法:实际语句:
1
git checkout -b|-B <new_branch> [<start point>]
这个时候分支是本地分支,并没有提交到服务器上去,如果这个分支已经被创建,这个命令会失败,这个时候,如果想要重置这个分支,需要使用1
git checkout -b hotfix-1.2.1 master
-B
参数。 - 查看分支:
git branch -av
- 进行修改工作
- ……
问题:本地发生了一些修改,但是想放弃这些修改,回退到获取这个版本初始时的状态。
参考语法:
1 | git checkout [<tree-ish>] [--] <pathspec>… |
实际语句:
1 | git checkout 26a2e80 # 26a2e80 是一个commit号,这个命令会把index区域和工作区域的内容都更新 |
这个命令很灵活,既可以带一个commit
号,又可以带着一个路径,tree-ish
可以理解成一个commit
号,就是恢复到某一个commit
号,index
就是暂存区,这里要理解Git
的三个区域,如果这个还不明白,那需要单开一篇文章去讲了。
以上是checkout比较常用的两个用法,逐步整理其他的用法。
参考:https://git-scm.com/docs/git-checkout。
https://stackoverflow.com/questions/14460595/git-checkout-with-dot。