在Arch Linux包裝中,我遇到了git提示(What is a branch tip in Git?)這個詞。作爲一個git用戶,我習慣於調用HEAD,我認爲它是相同的或者至少是類似的概念。HEAD和git中的提示之間有什麼關係?
這兩者之間的關係是什麼?爲什麼同一件事情有兩個名字(假設他們是這樣),並且是否存在一個名稱更合適的情況?
在Arch Linux包裝中,我遇到了git提示(What is a branch tip in Git?)這個詞。作爲一個git用戶,我習慣於調用HEAD,我認爲它是相同的或者至少是類似的概念。HEAD和git中的提示之間有什麼關係?
這兩者之間的關係是什麼?爲什麼同一件事情有兩個名字(假設他們是這樣),並且是否存在一個名稱更合適的情況?
HEAD
是git中的一個特殊術語。它指的是最近在現在的和在你現在坐的圖的位置。
如果你在一個分支,並在其提示,然後分支小費也被稱爲HEAD
。
如果您檢出另一個分支,那麼該分支的提示將變爲HEAD
。
如果您簽出一個隨機提交,它根本不是分支提示,例如,
git checkout HEAD~3
(其作爲可能不會將你置於一個分離的頭狀態),則該承諾被稱爲HEAD
,雖然它不一定與任何一間分行的小費排隊。
這是密切相關的GIT中模型本身的一個問題:所有的提交(連同初始提交的除外)具有至少一個親本:
+--- G
+
A +- B +- C +- D +- H
+ +
+----|--- E
|
+--- F
這意味着所有的提交可以被視爲有向非循環圖的節點,其中初始提交是根;這個有向無環圖的葉子是分支尖端。
重新HEAD
,從git(1)
:
命名的指針叫裁判標誌着在歷史上有趣的觀點。一個ref可以包含一個對象的名稱或另一個名稱的 SHA-1。名稱以 開頭的參考ref/head /包含正在開發的分支 的最近提交(或「頭」)的SHA-1名稱。感興趣標籤的SHA-1名稱存儲在ref/tags /下。 A 名爲HEAD的特殊參考文件包含當前檢出分支的名稱。
這個描述並不適用於分離的HEAD場景(因爲分支並沒有真正的名字),但是如果你把這種情況想象成一個匿名分支,它仍然會很好地描述它。
總之,HEAD
是一個指向提交(在某種意義上說 - 它通常更準確的想HEAD
作爲一個指針指向一個REF,這反過來又指向一個提交),而分支提示指一種特定類型的提交,那些沒有後代的。