git checkout命令详解 git checkout feature/test123 //切换到feature/test123分支 保证当前分支没有修改提交,否则回提示error: Your local changes to the following files would be overwritten by checkout:
在实际应用中,git checkout是最为常见命令之一。html
此命令参数众多,功能多样,但有些功能可能整个职业生涯都不会用到,因此本文只介绍最为实用的部分。git
若是想要了git checkout命令全部功能,能够阅读帮助文档:spa
[Shell] 纯文本查看 复制代码翻译
13d |
|
一.命令概述:htm
众多教程将此命令翻译成"检出",好比检出某分支。blog
因为本人英文水平有限(良心话)不能理解它的含义,固然这也不是咱们所深究的重点。教程
做用综述以下:ci
(1).切换或者新建分支。
(2).将暂存区或者指定commit内容覆盖到工做区。
此命令整体功能大体上述两条,固然因为参数的不一样,功能在细节上会有所不一样。
二.切换或者新建分支:
首先查看一下当前项目的分支:
[Shell] 纯文本查看 复制代码
1 |
|
代码运行效果截图以下:
当前位于Develop分支,下面切换到master分支:
[Shell] 纯文本查看 复制代码
1 |
|
代码运行效果截图以下:
能够看到如今已经切换到master分支。
默认状态下,新建分支并不能自动切换到此新分支下,代码以下:
[Shell] 纯文本查看 复制代码
1 |
|
新建newBr分支,但默认不会切换到此分支,图示以下:
咱们也能够在新建分支的同时切换到此分支:
[Shell] 纯文本查看 复制代码
1 |
|
代码运行效果截图以下:
上述代码实现新建newBr2分支,并切换到此分支。
三.用暂存区或者指定commit提交内容覆盖工做区内容:
(1).用暂存区内容覆盖工做区内容:
当前工做区readme.txt文件的内容以下:
[HTML] 纯文本查看 复制代码
1 2 3 |
|
下面再添加一行:
[HTML] 纯文本查看 复制代码
1 2 3 4 |
|
将其提交到暂存区,代码以下:
[Shell] 纯文本查看 复制代码
1 |
|
再给工做区readme.txt文件添加一行:
[HTML] 纯文本查看 复制代码
1 2 3 4 5 |
|
如今后悔了,想要将暂存区内容恢复到工做区,代码以下:
[Shell] 纯文本查看 复制代码
1 |
|
以上代码能够将暂存区中的readme.txt文件还原到工做区,若是要还原多个文件,那么使用空格分隔:
[Shell] 纯文本查看 复制代码
1 |
|
若是要还原全部文件,checkout后面跟点便可(.):
[Shell] 纯文本查看 复制代码
1 |
|
特别说明:若是checkout后面是文件名称,如下写法更为稳妥:
[Shell] 纯文本查看 复制代码
1 |
|
文件名称前面有两个横杠,而且中间采用空格分隔(不然报错)。此种方式能够防止Git出现误判,加入暂存区有一个文件名为ant(没有后缀名),刚好当前项目也有有个名为ant的分支,这个时候Git会优先将ant当作分支处理,因而就有可能致使错误。
(2).用指定commit提交的内容覆盖工做区:
当前工做区readme.txt文档的内容是:
[HTML] 纯文本查看 复制代码
1 2 3 4 |
|
再来看一下提交历史,代码以下:
[Shell] 纯文本查看 复制代码
1 |
|
运行效果截图以下:
下面用c1提交的内容进行覆盖,代码以下:
[Shell] 纯文本查看 复制代码
1 |
|
代码运行后,工做区readme.txt文档内容变为:
[HTML] 纯文本查看 复制代码
1 |
|
checkout后面的参数不必非要是sha-1值,只要可以惟一标识指定提交便可,也能够采用以下形式:
[Shell] 纯文本查看 复制代码
1 |
|
咱们也能够将其余分支的指定提交内容还原到当前分支工做区,首先作一下说明:
[Shell] 纯文本查看 复制代码
1 |
|
checkout后面仅仅跟着分支名称,那么它的功能是切换分支。
[Shell] 纯文本查看 复制代码
1 |
|
若是分支后面跟着文件路径,那么就是将对应分支中的文件还原到当前分支的工做区。
下面举个例子,当前咱们在master分支,readme.txt文档内容为:
[HTML] 纯文本查看 复制代码
1 2 3 |
|
如今咱们用Develop分支的指定commit提交的文件来覆盖master分支工做区:
[Shell] 纯文本查看 复制代码
1 |
|
双横杠(--)后面加不加空格的区别能够参阅git双横杠和单横杠区别一章节。