git checkout命令詳解

2021-09-28 11:27:53 字數 3862 閱讀 9546

在實際應用中,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 checkout 切換到名字為branchname的本地分支。git checkout b 建立乙個名字為branchname的分支並且切換到改分支。git checkout b 建立並重置乙個名字為branchname的分支並且切換到改分支。git checkout filepathnam...

git checkout 遠端分支

git checkout abc 如果遠端剛好有同名分支,則會在本地建立abc分支,並切換到該分支,並追蹤遠端的abc分支。這相當於 git checkout b abc origin abc 但如果用git checkout b abc,則會在本地複製當前分支為abc,無視遠端,這可能不是你的本意...

git checkout 撤銷操作

索引區index 暫存區stage 工作區workspace local git add將修改新增到stage git commit將stage提交為乙個commit,且本次stage和本次commit保持一致 撤銷修改 1.只在local修改 沒有add操作 git checkout 即可 2.l...