2017-07-17 148 views

回答

2

總之,沒什麼大不了的事情。檢查出branch會更容易,並讓您保持最新狀態(即最新的commit)。檢查出commit可能或可能不是把你置於分支的最新狀態。

git checkout <branch>將在其最新提交時結賬<branch>,即HEAD將指向該分支的最後提交。

git checkout <commit>是有點不同。如果檢出<commit>,您可能會指向最新的提交,因此您將與HEAD同步。 你也可以checkout先前的承諾,以及,這將使你在一個detached HEAD狀態,即HEAD指向不同的使用Git的歷史承諾(最有可能是最新的)。您也可以重置HEAD,以指向您已簽出的當前提交。

您通常應該通過<branch>結帳,因爲您將始終知道您擁有該分支的最新版本(除非存在上游更改,那麼您應該使用git pull)。

Here是文檔git checkout如果您想了解更多信息。

1

兩個checkout <commit>checkout <branch>是在同他們將爲文件和目錄進行必要的更改在您的工作樹,使其最終看起來一樣被提交由<commit><branch>參數指定的記錄文件的狀態。

除此之外,後者(<branch>)還設置您指定爲活躍的分支任何分支。通過這樣做,它完成了「在一個分支上」的概念。

分支只是一個可移動的標籤,可以自動移動到任何您提交的更新提交提交。這些標籤使提交更易於管理和記憶。

checkout <commit>可以把你detached state。在這種狀態下,你不會得到你的自定義標籤。但是您可以創建提交併在此後在該位置創建一個新分支。除了分支(或標籤)沒有標記的事實以外,最終會在多天後得到garbage collected,無論是否在分離狀態下工作都是個人偏好和/或便利性的問題。

2

簡單的git結帳branch_name帶你到最新的提交分支哪來的爲帶你到一個提交你提到它的名字。

0

我不同意上面說的話,比如「他們是一樣的」或者「沒什麼不好的事情會發生」。

它們在一個重要的方面明顯不同。 antak在上面的帖子中正確地描述了它,但我想強調潛在的危險,那就是你可能會失去對新提交的追蹤。

如果您通過分支簽出,那麼分支指針將指向提交,並且在您下次提交時,將添加新的提交,並且分支指針將隨之一起移動。這通常是人們想要發生的事情。

如果你只是通過提交簽出,然後進行新的提交,那麼你沒有指向新提交的分支。只有HEAD指向它。

如果您此時要簽出其他分支,則可能會失去對該新提交的跟蹤。 (如果你不知道像ref-log這樣的特殊事情,你會失去它的蹤跡)。

正如antak指出的那樣,您可以創建新的commmit,然後在那個時候創建​​一個分支,但是如果您不知道原始問題的答案,那麼您可能不知道該怎麼做,對?

堅果殼:你通常要檢查分支,除非你有特殊的理由否則。

相關問題