Git:git-checkout的用法总结(1)

原帖收藏于IT老兵驿站,传递一个IT老兵在凋零前的光和氧。

Git的git-checkout的用法总结。

初衷

git-checkoutGit最常用的命令之一,但又是有些复杂的命令,总会感觉有些用不明白,用不明白的原因应该是没有深度地、全面地理解一下,所以要对它好好整理一下。

介绍

checkoutCVSSVN中都是检出的意思,从版本库检出一个版本,在Git中就不是这么简单了。手册上是这样介绍的:

1
git-checkout - Switch branches or restore working tree files

Git里面,checkout用于切换分支或者恢复工作树的文件。

实例

问题:线上分支出现了一个问题,急需要修复(可以参看Git Flow一章)。
步骤:

  1. 需要创建一个hotfix分支,参考语法:
    1
    git checkout -b|-B <new_branch> [<start point>]

实际语句:

1
git checkout -b hotfix-1.2.1 master

这个时候分支是本地分支,并没有提交到服务器上去,如果这个分支已经被创建,这个命令会失败,这个时候,如果想要重置这个分支,需要使用-B参数。

  1. 查看分支:git branch -av
  2. 进行修改工作
  3. ……

问题:本地发生了一些修改,但是想放弃这些修改,回退到获取这个版本初始时的状态。
参考语法:

1
git checkout [<tree-ish>] [--] <pathspec>…​

实际语句:

1
2
3
git checkout 26a2e80 # 26a2e80 是一个commit号,这个命令会把index区域和工作区域的内容都更新
git checkout -- README # README是想恢复的文件名,恢复成index区域里面的内容,为什么要加“--”呢,这个是为了告诉Git,这是一个文件而不是一个分支
Git checkout . # 从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。