2012-03-19 110 views
6

例如,當兩個分支不同但在任一分支中沒有新提交時,爲什麼不合並更改?

我的主分支有東西在裏面。另一個叫other_branch的分支裏面有stuff + more_stuff。每個分支都沒有提交。

如果我簽出master,然後嘗試合併other_branch,git說「已經是最新的」。並沒有任何事情發生。爲什麼在這種情況下more_stuff不會被合併到master中?那是git的設計?

注意:other_branch是從一個較老的主提交創建的。

回答

6

這很簡單。如果git說「已經最新」,這意味着分支機構沒有分歧。如果至少有一個分支包含另一個分支沒有的提交,則兩個分支已經發生分歧。

我不確定你的意思是什麼東西+ more_stuff在裏面。如果你已經向other_branch添加了新文件(或者改變了現有文件),並且使用了「git add」和「git commit」,則other_branch歷史記錄將與主分支分離。既然git說沒有合併的改變,那麼這個分支上的歷史沒有改變,即你沒有提交任何東西。

+2

哦,我明白了。初學者不是很明顯。 other_branch包含與主相同的提交,因爲我是從較早的主提交啓動的。我很困惑,因爲當我結賬other_branch時,我看到不同的文件,所以我認爲git合併會將文件合併到主文件中。我明白現在它是如何工作的。 git merge基於提交,而不是當前的工作樹。 – trusktr 2012-03-19 00:14:53

2

它只發生在您嘗試合併的分支已包含在當前分支中。

因此,您提到的more_stuff已經在master分支中。

您可以使用gitk來檢查分支機構的可視化樹。

+0

gitk?不知道這是什麼 – 2016-07-13 14:51:29

+0

這是默認的git GUI。 [更多信息](https://git-scm.com/docs/gitk) – 2016-07-14 08:00:07

相關問題