2016-08-31 19 views
0

從我所看到的,當人們切換到現有分支時,他們不會切換到分支上的特定提交。爲什麼不?爲什麼人們在切換到分支之後不能切換特定的提交?

當我們切換到現有的分支時,我們是否自動切換到分支上的最新提交?

確實對分支感興趣的人只對分支上的最新提交感興趣,而對分支上的其他提交不感興趣?

什麼命令用於切換到提交?

+0

您可能有興趣閱讀git教程的分支部分:https://learningpassion.wordpress.com/2016/06/19/git-tutorial-day-to-day-use-part-6-branching在一個堅果殼/ – joker

回答

1

當我們切換到現有分支時,我們 自動切換到分支上的最新提交是否正確?

是的,的確如此。

這是真的,人誰感興趣的一個分支只 感興趣的最新提交的分支,而不是在樹枝上其他 提交?

這是不正確的。如果您爲了修改目的而切換到分支,然後提交它們,您幾乎可以肯定地意味着這些更改會進入該分支。如果您切換到該分支的最新提交,那麼您將在detached HEAD state中,並且您的提交將轉到別處(成爲某種匿名分支)。

+0

謝謝。 '脫離HEAD狀態'是什麼意思? – Tim

+0

@Tim閱讀此:https://www.git-tower.com/learn/git/faq/detached-head-when-checkout-commit – Leon

1

這取決於。如果你簽出了分支,那麼你選擇了最後一個可用的提交,如果你只切換到已經簽出的那個,你將被選中你正在處理的那個,或者你最後一個結賬到本地機器(HEAD)。

在大多數情況下,對上次提交感興趣的人,因爲他們不想擁有舊版本的項目(也許有錯誤或沒有功能)。例如,如果他們想要在其他分支中創建一些功能,而這些功能在當前分支中沒有一些新功能,則人們可能希望變老。或者找出這個較舊的提交代碼中的內容。

+0

謝謝。用什麼命令切換到提交? – Tim

+1

'git checkout ',其中提交可以通過幾種方式中的任何一種來指定。最一般的是40個字符的sha1sum,但你也可以指定'HEAD〜1'或一個標籤名稱。 –

4

該分支是一個指向提交的指針。所以是的,當你簽出一個分支時,你簽出分支指向的提交,沒有其他提交。你看到的「在同一個分支中」的其他較老的提交根本不是由分支指向的。他們是由他們的父承諾指出的。

有人簽出分支可能會對較早的提交感興趣,但是說這些提交在同一分支上有點誤導。 Git沒有那種分支。較舊的提交是檢出提交的提交歷史記錄的一部分,而不是分支的提交歷史記錄。

要簽出提交,請執行git checkout <sha-1>。這會讓你的HEAD分離,這意味着你沒有檢出分支。檢出提交的完整提交歷史記錄當然可用,這與分支無關。

+1

我只想說這是我在這裏看到的一個特定git實用程序的最簡單但清晰完整的解釋之一。 – BlueSpaceCanary

相關問題