所以我有分支主和RC分支。當我向主控制器發出拉請求時,它顯示出很多衝突。我首先嚐試在RC上進行重新綁定(本地),並且沒有發生任何rebase衝突。合併衝突但沒有發生兌換衝突
當我嘗試在本地合併時,我也遇到了衝突。爲什麼會這樣?什麼可以使rebase工作沒有衝突,但不合並?
所以我有分支主和RC分支。當我向主控制器發出拉請求時,它顯示出很多衝突。我首先嚐試在RC上進行重新綁定(本地),並且沒有發生任何rebase衝突。合併衝突但沒有發生兌換衝突
當我嘗試在本地合併時,我也遇到了衝突。爲什麼會這樣?什麼可以使rebase工作沒有衝突,但不合並?
我認爲最有可能的原因是一個提交已經從一個參與合併的分支挑選到另一個分支。如果rebase檢測到它要重寫的提交應用與新基礎中已包含的提交相同的文本更改,則它將跳過該提交。 (有可能是一些不準確的有關解釋,但它是大致正確的...)
所以,如果你有
x -- A -- B -- C <--(master)
\
D -- A' -- E <--(branch)
其中A'
使得該A
到x
作出D
同樣的變化(也許是櫻桃-picked,或重訂基期,或壁球合併...),然後
git rebase branch master
將改寫D
和E
,跳過A'
。但
git checkout master
git merge branch
不會看個人的承諾,所以你可以得到由於A'
變化的衝突。
另請參閱我對https://stackoverflow.com/q/44546974/1256452的回答(包括此案例和其他兩個案例) – torek
你有沒有rerere啓用('git config --getrerere.enabled')?這可能是衝突在一種情況下可以自動解決的原因之一,而不是另一種情況。 – LeGEC