git checkout命令詳解
在實際應用中,git checkout是最為常見命令之一。
此命令引數眾多,功能多樣,但有些功能可能整個職業生涯都不會用到,所以本文只介紹最為實用的部分。
如果想要了git checkout命令所有功能,可以閱讀幫助文件:
[Shell] 純文字檢視 複製程式碼$ git checkout --help
一.命令概述:
眾多教程將此命令翻譯成"檢出",比如檢出某分支。
由於本人英文水平有限(良心話)不能理解它的含義,當然這也不是我們所深究的重點。
作用綜述如下:
(1).切換或者新建分支。
(2).將暫存區或者指定commit內容覆蓋到工作區。
此命令總體功能大致上述兩條,當然由於引數的不同,功能在細節上會有所不同。
二.切換或者新建分支:
首先檢視一下當前專案的分支:
[Shell] 純文字檢視 複製程式碼$ git branch
程式碼執行效果截圖如下:
當前位於Develop分支,下面切換到master分支:
[Shell] 純文字檢視 複製程式碼$ git checkout master
程式碼執行效果截圖如下:
可以看到現在已經切換到master分支。
預設狀態下,新建分支並不能自動切換到此新分支下,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git branch newBr
新建newBr分支,但預設不會切換到此分支,圖示如下:
我們也可以在新建分支的同時切換到此分支:
[Shell] 純文字檢視 複製程式碼$ git checkout -b newBr2
程式碼執行效果截圖如下:
上述程式碼實現新建newBr2分支,並切換到此分支。
三.用暫存區或者指定commit提交內容覆蓋工作區內容:
(1).用暫存區內容覆蓋工作區內容:
當前工作區readme.txt檔案的內容如下:
[HTML] 純文字檢視 複製程式碼螞蟻部落一 螞蟻部落二 螞蟻部落三
下面再新增一行:
[HTML] 純文字檢視 複製程式碼螞蟻部落一 螞蟻部落二 螞蟻部落三 螞蟻部落四
將其提交到暫存區,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git add readme.txt
再給工作區readme.txt檔案新增一行:
[HTML] 純文字檢視 複製程式碼螞蟻部落一 螞蟻部落二 螞蟻部落三 螞蟻部落四 螞蟻部落五
現在後悔了,想要將暫存區內容恢復到工作區,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git checkout readme.txt
以上程式碼可以將暫存區中的readme.txt檔案還原到工作區,如果要還原多個檔案,那麼使用空格分隔:
[Shell] 純文字檢視 複製程式碼$ git checkout readme.txt antzone.txt
如果要還原所有檔案,checkout後面跟點即可(.):
[Shell] 純文字檢視 複製程式碼$ git checkout .
特別說明:如果checkout後面是檔名稱,以下寫法更為穩妥:
[Shell] 純文字檢視 複製程式碼$ git checkout -- readme.txt
檔名稱前面有兩個橫槓,並且中間採用空格分隔(否則報錯)。此種方式可以防止Git出現誤判,加入暫存區有一個檔名為ant(沒有字尾名),恰好當前專案也有有個名為ant的分支,這個時候Git會優先將ant當做分支處理,於是就有可能導致錯誤。
(2).用指定commit提交的內容覆蓋工作區:
當前工作區readme.txt文件的內容是:
[HTML] 純文字檢視 複製程式碼螞蟻部落一 螞蟻部落二 螞蟻部落三 螞蟻部落四
再來看一下提交歷史,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log --oneline
執行效果截圖如下:
下面用c1提交的內容進行覆蓋,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git checkout 6c89271 -- readme.txt
程式碼執行後,工作區readme.txt文件內容變為:
[HTML] 純文字檢視 複製程式碼螞蟻部落一
checkout後面的引數沒必要非要是sha-1值,只要能夠唯一標識指定提交即可,也可以採用如下形式:
[Shell] 純文字檢視 複製程式碼$ git checkout HEAD^^ -- readme.txt
我們也可以將其他分支的指定提交內容還原到當前分支工作區,首先做一下說明:
[Shell] 純文字檢視 複製程式碼$ git checkout master
checkout後面僅僅跟著分支名稱,那麼它的功能是切換分支。
[Shell] 純文字檢視 複製程式碼$ git checkout Develop -- readme.txt
如果分支後面跟著檔案路徑,那麼就是將對應分支中的檔案還原到當前分支的工作區。
下面舉個例子,當前我們在master分支,readme.txt文件內容為:
[HTML] 純文字檢視 複製程式碼螞蟻部落一 螞蟻部落二 螞蟻部落三
現在我們用Develop分支的指定commit提交的檔案來覆蓋master分支工作區:
[Shell] 純文字檢視 複製程式碼$ git checkout Develop -- readme.txt
雙橫槓(--)後面加不加空格的區別可以參閱git雙橫槓和單橫槓區別一章節。
相關文章
- git checkout 命令詳解Git
- git checkout 命令詳解—— Git 學習筆記 16Git筆記
- git checkout 命令Git
- git status命令詳解Git
- git init命令詳解Git
- git remote 命令詳解GitREM
- git archive命令詳解GitHive
- Git 命令大全,詳解!Git
- Reset and Checkout Files in GitGit
- git add命令詳解Git
- git diff --stat命令詳解Git
- Git 學習之命令詳解Git
- Git 常用命令詳解Git
- git show-branch命令詳解Git
- 淺談git rebase和git checkout –ours(theirs)Git
- idea Git Force Checkout後的解決辦法IdeaGit
- Git(7)-- 檢視提交歷史(git log 命令詳解)Git
- git reset 命令詳解(二)—— Git 學習筆記 08Git筆記
- git reset 命令詳解(一)—— Git 學習筆記 07Git筆記
- git常用命令(詳細註解)Git
- 保姆教程系列:Git 實用命令詳解Git
- git常用命令stash詳細解釋。Git
- Git 操作命令詳細Git
- git checkout 和 git reset 的區別 —— Git 學習筆記 09Git筆記
- 【Git】2. Git常用命令詳解、版本切換原理Git
- Git詳解Git
- 『現學現忘』Git基礎 — 25、git log命令引數詳解Git
- git使用詳解Git
- Git詳解之一:Git起步Git
- Git詳解之三:Git分支Git
- Git詳解之六:Git工具Git
- git checkout 對工作目錄的影響 —— Git 學習筆記 21Git筆記
- git rebase vs git merge詳解Git
- Git詳解之五:分散式GitGit分散式
- Git詳解之七:自定義GitGit
- Git詳解之二:Git基礎Git
- git ssh配置詳解Git
- Git Reference引用詳解Git