該示例的混帳合併文檔狀態:Git合併「重播」更改,但是呢?
A---B---C topic
/
D---E---F---G master
然後「混帳合併主題」將重播的話題分支上的修改,因爲它從主(即E)分道揚鑣,直到其當前提交( C),並將結果與兩個父提交的名稱以及來自描述更改的用戶的日誌消息一起記錄在新的提交中。
我在想「重播更改」。在其他關於git合併的文章中,我幾乎找不到「重播」這個詞。
我想git會找到A和合並基礎之間的變化,應用該變化,在B和A之間應用差異,在C和B之間應用差異,然後將這一系列更改合併到合併提交中。基本上在合併基礎之後查看每個提交併單獨評估它們。
如果這是真的,什麼情況下會發生......
A---B---C---I topic
/ \
D---E---F---G---H(merge)---O master
,我想主合併成話題。假設當前分支是主題,「git merge master」。我的合併基數爲「git merge-base master topic」is commit C。
如果我們堅持「重放」更改的故事,主題分支如何獲得提交F和G的更改?它是否找到H和C(合併基礎)之間的差異?如果是這樣,爲什麼要重播第一個示例中的一系列更改,而不是找到分支頭和合並基礎之間的差異?
查找頭部和底部之間的差異將通過...重放提交完成。 (但這不是Git所做的,因爲即使您在稍後的提交中恢復更改並嘗試合併到該提交中,仍可能導致衝突。) – Ryan