Git學習筆記04 git checkout

2022-04-05 23:56:21 字數 2047 閱讀 6241

摘自《git權威指南》

檢出命令

git checkout

是git

最常用的命令之一,同時也是乙個很危險的命令,因為這條命令會重寫工作區。檢出命令的用法如下:

用法一:

git checkout [-q] [--] ...

用法二:

git checkout [

]用法三:

git checkout [-m] [[-b]--orphan] ]

上面列出的第一種用法和第二種用法的區別在於,第一種用法在命令中包含路徑

。為了避免路徑和引用(或者提交

id)同名而發生衝突,可以在

前用兩個連續的**(短號)作為分隔。

第一種用法的

是可選項,如果省略則相當於從暫存區(

index

)進行檢出。這和上一章的重置命令大不相同:重置的預設值是

head

,而檢出的預設值是暫存區。因此重置一般用於重置暫存區(除非使用

--hard

引數,否則不會重置工作區),而檢出命令主要是覆蓋工作區(如果

不省略,也會替換暫存區中相應的檔案)。

第一種用法(包含了路徑

的用法)不會改變

head

頭指標,主要是用於指定版本的檔案覆蓋工作區中對應的檔案。如果省略

,則會用暫存區的檔案覆蓋工作區的檔案,否則用指定提交中的檔案覆蓋暫存區中和工作區中對應的檔案。

第二種用法(不使用路徑

的用法)則會改變

head

頭指標。之所以後面的引數會寫作

,是因為只有

head

切換到乙個分支才可以對提交進行跟蹤,否則仍然會進入「分離頭指標」的狀態。在「分離頭指標」狀態下的提交不能被引用關聯到,從而可能丟失。所以用法二最主要的作用就是切換到分支。如果省略

則相當於對工作區進行狀態檢查。

第三種用法主要是建立和切換到新的分支(

),新的分支從

指定的提交開始建立。新分支和我們熟悉的

master

分支沒有什麼實質的不同,都是在

refs/heads

命名空間下的引用。

下圖所示的版本庫模型圖描述了

git checkout

實際完成的操作。

下面通過一些示例具體看一下檢出命令的不同用法。

$ git checkout branch
檢出branch

分支。要完成圖中的三個步驟,更新

head

以指向branch

分支,以及用

branch

指向的樹更新暫存區和工作區。

$ git checkout
彙總顯示工作區、暫存區與

head

的差異。

$ git checkout head
同上

$ git checkout -- filename
用暫存區中

filename

檔案來覆蓋工作區中的

filename

檔案。相當於取消自上次執行

git add filename

以來(如果執行過)的本地修改。

$ git checkout branch -- filename
維持head

的指向不變。用

branch

所指向的提交中

filename

替換暫存區和工作區中相

應的檔案。注意會將暫存區和工作區中的

filename

檔案直接覆蓋。

$ git checkout -- . 或寫作 git checkout .
注意git checkout

命令後的引數為乙個點(「

.」)。這條命令最危險!會取消所有本地的

修改(相對於暫存區)。相當於用暫存區的所有檔案直接覆蓋本地檔案,不給使用者任何

確認的機會!

二 git學習筆記04

內容多來自於 一 起步 1 版本控制 版本控制是一種記錄乙個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統 2本地版本控制 它的工作原理是在硬碟上儲存補丁集 補丁是指檔案修訂前後的變化 通過應用所有的補丁,可以重新計算出各個版本的檔案內容。集中化的版本控制系統 有乙個單一的集中管理的伺服器,...

php學習筆記 04

預定義常量 php version 獲取當前使用的php版本號。file 獲取當前正在解析的檔名。如果如果這個常量在內部檔案中使用,則提取該檔名,而不是其父檔名。line 獲取當前正在解析的檔案的行數。如果中國常量在內部檔案中使用,則給出該內部檔案中的行數。e error 除非遇到解析時不可恢復的錯...

AJAX學習筆記04

ajax 學習筆記04 學習課程 學習內容 相關檔案 可伸縮的級聯選單和區域性重新整理 jquery menu.jsp jquery menu.js jquery.js jquery menu.css 實現效果 單擊主選單,切換相應主選單下的子選單的顯示狀態,預設子選單的狀態為隱藏 上面兩個ul和下...