git checkout
有两种不同的功能:
- 切换分支
- 撤销工作区的修改
创建/切换分支
- 切换分支
git checkout <branch>
- 创建并切换分支
git checkout -b <branch>
- 创建分支并与远程分支相关联的两种快捷方式
git checkout -b <branch> origin/<branch>
先在本地建立一个分支,并切换到该分支,然后从远程分支上同步代码到该分支上,并建立关联
git checkout -t origin/<branch>
默认会在本地创建一个和远程分支一样名称的分支,其他和上面一致
撤销工作区的修改
git checkout -- <file>
- 注意:这条命令只针对工作区的修改有效
扩展
这里有个疑问:修改了工作区的内容后,使用
git checkout -- <file>
撤销,到底是从暂存区还是版本库中还原内容呢?
比如我们对readme.txt文件进行修改,然后使用git checkout -- readme.txt
命令将readme.txt在工作区的修改全部撤销掉,这里要分为两种情况分析:readme.txt文件修改后未提到暂存区和已提到暂存区
- 一种是readme自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态;
- 一种是readme已经添加到暂存区后,再作了修改,现在撤销修改就回到暂存区后的状态;
总之,
git checkout -- <file>
命令就是让文件回到最近一次git commit
或git add
时的状态