2013-10-09 37 views
0

在Git的文件,Git的底墊指定當有一個共同的承諾,這種共同提交跳過:git合併如何處理常見的提交?

如果上游分支已經包含所做的改變(例如, 因爲你郵寄了一個補丁,它被應用於上游),那麼提交將被跳過。例如,運行「git的重訂master`的上 以下的歷史(其中A」和A介紹了同一套 的變化,但有不同的提交者信息):

並對其進行可視化:

  A---B---C topic 
     /
    D---E---A'---F master 

變爲:

    B'---C' topic 
       /
    D---E---A'---F master 

我的問題是:當你做一個合併,而不是一個底墊在這種情況下會發生什麼?

編輯:更重要的是...是提交一次或兩次完成?

回答

2

就會變成,

 A---B---C  topic 
    /  \ 
D---E---A'---F -- F' master 

https://www.kernel.org/pub/software/scm/git/docs/git-merge.html

它說:Except in a fast-forward merge (see above), the branches to be merged must be tied together by a merge commit that has both of them as its parents.顯然,這不是一個FF。

+0

我不知道** git imerge **(外部工具)如何處理這個問題... –

+0

林修改我的問題/評論。早些時候我說過,承諾'A'做了兩次,但現在我有理由相信它只做了一次,無論如何這會更有效率。 @JakubNarębski我從來沒有聽說過imerge ..有什麼好處? – user2202911

+0

@ user2202911:** git-imerge **(https://github.com/mhagger/git-imerge)是一種工具,可以通過自動合併所有提交的方式來執行*增量*大合併或大轉義兩個分支(分支的交叉產品),所以我想它會選擇A'和A是相同的變化。見例如http://softwareswirl.blogspot.com/2013/05/git-imerge-practical-introduction.html –