在實際應用中,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雙橫槓和單橫槓區別一章節。