有沒有什麼辦法可以自動重定位大合併提交的數量?另一個問題Rebasing a Git merge commit的答案建議使用--preserve-merges
,但這也會使非合併提交變得更加複雜。Rebase/Replay僅合併提交
當將功能分支合併到主或集成分支中,然後發現別人剛推送更改時,不需要此行爲。此外,能夠將開發分支重新綁定到新的主提交上,或者從開發中刪除不打算使用的修補程序是很有用的。
例如,假設以下情況:
* 7909b1a (origin/master) Merge bug/456
|\
| * f9d43b6 (origin/bug/456) 456 - Change color
|/
| * 32666f3 (HEAD, master) Merge branch 'bug/123'
| |\
|//
| * 0939652 (origin/bug/123, bug/123) 123 - Fix Spelling
|/
o 96c9aa9 (tag: v1.1.1)
如果我運行git rebase --preserve-merges origin/master
時,將導致以下情況:
* (HEAD, master) Merge branch 'bug/123'
|\
| * 8e6ccbe 123 - Fix Spelling
|/
* 7909b1a (origin/master) Merge bug/456
|\
| * f9d43b6 (origin/bug/456) 456 - Change color
|/
| * 32666f3 (ORIG_HEAD) Merge branch 'bug/123'
| |\
|//
| * 0939652 (origin/bug/123, bug/123) 123 - Fix Spelling
|/
o 96c9aa9 (tag: v1.1.1)
這是不可取的,因爲犯0939652正在重做,但它已經被推到公共倉庫,所以它不應該被重播。我想要的結果如下:
* 710c5d7 (HEAD, master) Merge branch 'bug/123'
|\
| * 0939652 (origin/bug/123, bug/123) 123 - Fix Spelling
* | 7909b1a (origin/master) Merge bug/456
|\ \
| |/
|/|
| * f9d43b6 (origin/bug/456) 456 - Change color
|/
o 96c9aa9 (tag: v1.1.1)
我可以手動reset --hard
原產/主,然後重新合併,我已經做了(使用--rerere-autoupdate選項,樹枝,這樣我就不必reresolve衝突),但是如果有15個合併而不是1,可能會變得非常複雜。
是否有任何內置的Git解決方案或腳本可以實現我想要的功能?
順便說一句,做git rebase -ip master
,然後不挑選非合併提交不起作用。我得到
error: Commit 00... is a merge but no -m option was given.
fatal: cherry-pick failed
Could not pick 00...
我已經提到過這種可能性,「我可以手動重置 - 難以產生/主,然後重新合併那些我已經做過的分支(使用--rerere-autoupdate選項,這樣我就不必重新解決衝突),但是當有15個合併而不是1個時,這會變得相當複雜。「 –
請繪製一張準確的提交圖表反映你想要的。你現在所期望的結果是你所畫的提交圖,就是你說你不想要的合併,並且不希望重新解決已經在現有合併中解決的衝突,這只是說你想要的另一種方式重新**使用**重新**有線**重新**結果。 – jthill
該圖準確。我只想要一個適用於大量合併的解決方案。引用最初的問題,「當有15個合併而不是1個時,這可能會變得非常複雜」。我會盡量讓這個更清楚。 –