Всякий раз, когда вы готовы к слиянию branch2
, вы должны перебазировать его на branch1
(если branch1
еще не объединено, или поверх master
(если branch1
уже было объединено)
Таким образом:
- вы разрешаете конфликты локально, переигрывая
branch2
коммитов поверх master
- , окончательное слияние будет ускоренной перемоткой вперед (тривиально) один.
То есть начальная ситуация:
m--m--m
\
b1 --b1--b1--b1
\
b2--b2
Как только вы будете готовы, b1 мог развиться и слиться с мастером:
m--m--m--m--m---------------M--m--m (master)
\ /
b1 --b1--b1--b1--b1 (branch1)
\
b2--b2--b2--b2 (branch2)
A rebase --onto
будет достаточно:
git rebase --onto master $(git merge-base branch1 branch2) branch2
m--m--m--m--m---------------M--m--m--b2'--b2'--b2'--b2' (branch2)
\ / (master)
b1 --b1--b1--b1--b1 (branch1)
Тогда merge master
будет тривиальным