如果我們簽出一個提交名稱而不是分支名稱,會發生什麼?git checkout commit-name和git checkout branchname有何區別
回答
總之,沒什麼大不了的事情。檢查出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
如果您想了解更多信息。
兩個checkout <commit>
和checkout <branch>
是在同他們將爲文件和目錄進行必要的更改在您的工作樹,使其最終看起來一樣被提交由<commit>
或<branch>
參數指定的記錄文件的狀態。
除此之外,後者(<branch>
)還設置您指定爲活躍的分支任何分支。通過這樣做,它完成了「在一個分支上」的概念。
分支只是一個可移動的標籤,可以自動移動到任何您提交的更新提交提交。這些標籤使提交更易於管理和記憶。
checkout <commit>
可以把你detached state。在這種狀態下,你不會得到你的自定義標籤。但是您可以創建提交併在此後在該位置創建一個新分支。除了分支(或標籤)沒有標記的事實以外,最終會在多天後得到garbage collected,無論是否在分離狀態下工作都是個人偏好和/或便利性的問題。
簡單的git結帳branch_name帶你到最新的提交分支哪來的爲帶你到一個提交你提到它的名字。
我不同意上面說的話,比如「他們是一樣的」或者「沒什麼不好的事情會發生」。
它們在一個重要的方面明顯不同。 antak在上面的帖子中正確地描述了它,但我想強調潛在的危險,那就是你可能會失去對新提交的追蹤。
如果您通過分支簽出,那麼分支指針將指向提交,並且在您下次提交時,將添加新的提交,並且分支指針將隨之一起移動。這通常是人們想要發生的事情。
如果你只是通過提交簽出,然後進行新的提交,那麼你沒有指向新提交的分支。只有HEAD指向它。
如果您此時要簽出其他分支,則可能會失去對該新提交的跟蹤。 (如果你不知道像ref-log這樣的特殊事情,你會失去它的蹤跡)。
正如antak指出的那樣,您可以創建新的commmit,然後在那個時候創建一個分支,但是如果您不知道原始問題的答案,那麼您可能不知道該怎麼做,對?
堅果殼:你通常要檢查分支,除非你有特殊的理由否則。
- 1. 「git checkout」和「git checkout - 」有什麼區別?
- 2. git-stash和git-checkout有什麼區別?
- 3. git clone和checkout有什麼區別?
- 4. git revert和git checkout
- 5. git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>
- 6. git reset --hard HEAD和git checkout之間有區別嗎?
- 7. git reset文件和git checkout文件有什麼區別?
- 8. 「git checkout -f」和「git reset --hard HEAD」有什麼區別?
- 9. 「git reset --hard」和「git checkout。」有什麼區別?
- 10. 「git reset --hard hash」和「git checkout hash」有區別嗎?
- 11. `git rebase foo bar`和`git checkout bar之間的區別; git rebase foo`?
- 12. git checkout --track origin/branch和git checkout -b branch branch/branch之間的區別
- 13. 如何將'git checkout'別名爲'git co'?
- 14. 「git branch -track」vs「git checkout -track」
- 15. Git Checkout特別分支
- 16. git checkout for xcode
- 17. git checkout | TUTORIAL_JAVA_VERSION |
- 18. git checkout。(dot)interactive
- 19. git checkout PREV
- 20. Git Checkout澄清
- 21. Android Studio git checkout
- 22. Jenkins和Git info/sparse-checkout
- 23. 如何從遠程標記執行「git checkout -b <branchname>」
- 24. 與上游同步叉:git fetch + git checkout + git merge與git checkout + git pull
- 25. 「git pull」和「git checkout -b」安全操作?
- 26. Git的 - 新的Checkout
- 27. git checkout的用途
- 28. Teamcity執行GIT Checkout
- 29. 什麼做「git checkout \ *」和「git commit - 」完成?
- 30. git checkout HEAD〜2 ISSUE