在git documentation for the checkout command下面的文字中發現:簡單的解釋
...如果沒有路徑給出 git的結帳時會還設置了指定的分支作爲更新頭 當前分支....
任何人都可以簡單說明這是什麼意思?如果看起來很簡單,我很抱歉,通過閱讀該頁面,我似乎無法完全明白它的意思。對不起,如果這似乎基本..
特別是我感到困惑如何檢查更新HEAD。我通常會設想結賬影響工作目錄 - 這是否是git獨有的能力,因爲您正在更新本地存儲庫副本以便稍後使用它?
在git documentation for the checkout command下面的文字中發現:簡單的解釋
...如果沒有路徑給出 git的結帳時會還設置了指定的分支作爲更新頭 當前分支....
任何人都可以簡單說明這是什麼意思?如果看起來很簡單,我很抱歉,通過閱讀該頁面,我似乎無法完全明白它的意思。對不起,如果這似乎基本..
特別是我感到困惑如何檢查更新HEAD。我通常會設想結賬影響工作目錄 - 這是否是git獨有的能力,因爲您正在更新本地存儲庫副本以便稍後使用它?
版本A:(指定僅分支)
git checkout <branch>
獲取所有文件對於<分支>和場所HEAD(一指向「我現在在哪裏」)指定分支。
版本B:(指定路徑僅)
git checkout <file>
獲取最新版本<文件>,隻身離開HEAD。
如果你是一個DETACHED HEAD模式(見this question),你可以很容易地重新HEAD到master分支:
dd http://marklodato.github.com/visual-git-guide/checkout-b-detached.svg
下面一個 'git checkout
' 將重置頭master
分支的末端。
(更多在「A Visual Git Reference」)
它也將更新索引和工作目錄。
所以它不僅僅是重置指針'HEAD
'。
HEAD
是一個指向您的工作副本檢出的提交。所以如果您簽出分支(或提交或標籤),則HEAD
將被設置爲該提交。
此信息存儲在文本文件.git/HEAD
,你可以簡單地看一下它的內容:
$ cat .git/HEAD
# refs: refs/heads/master
這意味着git checkout branchname
將
HEAD
設置爲該分支的頂端,以便您現在「處於」狀態。實施例:
[email protected] % git branch
* develop
master
next
[email protected] % git checkout master
Switched to branch 'master'
[email protected] % git branch
develop
* master
next
自從這個問題已經很長時間了,我理解GIT要好得多。我更喜歡這個答案,因爲它的寫法清晰簡潔(雖然我更新了它,主要是爲了格式化),但我相信當時我誤解了HEAD是修訂 - 我不明白HEAD是一個指針。我在想SVN在哪裏說HEAD通常意味着我在我的工作空間中進行了特定修訂。 – cgp 2013-01-17 02:29:55
你會說它與'svn revert'類似嗎? – 2013-09-16 16:19:01