2010-09-20 98 views
2

git documentation for the checkout command下面的文字中發現:簡單的解釋

...如果沒有路徑給出 git的結帳時會還設置了指定的分支作爲更新頭 當前分支....

任何人都可以簡單說明這是什麼意思?如果看起來很簡單,我很抱歉,通過閱讀該頁面,我似乎無法完全明白它的意思。對不起,如果這似乎基本..

特別是我感到困惑如何檢查更新HEAD。我通常會設想結賬影響工作目錄 - 這是否是git獨有的能力,因爲您正在更新本地存儲庫副本以便稍後使用它?

回答

3

版本A:(指定分支)

git checkout <branch> 

獲取所有文件對於<分支>和場所HEAD(一指向「我現在在哪裏」)指定分支。

版本B:(指定路徑

git checkout <file> 

獲取最新版本<文件>,隻身離開HEAD。

+0

自從這個問題已經很長時間了,我理解GIT要好得多。我更喜歡這個答案,因爲它的寫法清晰簡潔(雖然我更新了它,主要是爲了格式化),但我相信當時我誤解了HEAD是修訂 - 我不明白HEAD是一個指針。我在想SVN在哪裏說HEAD通常意味着我在我的工作空間中進行了特定修訂。 – cgp 2013-01-17 02:29:55

+0

你會說它與'svn revert'類似嗎? – 2013-09-16 16:19:01

3

HEAD是一個指向您的工作副本檢出的提交。所以如果您簽出分支(或提交或標籤),則HEAD將被設置爲該提交。

此信息存儲在文本文件.git/HEAD,你可以簡單地看一下它的內容:

$ cat .git/HEAD 
# refs: refs/heads/master 
3

這意味着git checkout branchname

  1. 退房從該分支尖端的文件到您的工作目錄和
  2. 將您的HEAD設置爲該分支的頂端,以便您現在「處於」狀態。

實施例:

[email protected] % git branch   
* develop 
    master 
    next 
[email protected] % git checkout master 
Switched to branch 'master' 
[email protected] % git branch 
    develop 
* master 
    next