Git: checkout的用法总结(1)

前往老兵驿站。

初衷

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

介绍

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

git-checkout - Switch branches or restore working tree files

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

实例

问题:线上分支出现了一个问题,急需要修复(可以参看Git Flow一章)。
步骤:
1. 需要创建一个hotfix分支,参考语法:

git checkout -b|-B <new_branch> [<start point>] 

实际语句:

git checkout -b hotfix-1.2.1 master

这个时候分支是本地分支,并没有提交到服务器上去,如果这个分支已经被创建,这个命令会失败,这个时候,如果想要重置这个分支,需要使用-B参数。
2. 查看分支:git branch -av
3. 进行修改工作
4. ……

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

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

实际语句:

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。

你可能感兴趣的:(Git)