Today I faced with one problem. My teammate created branch from master. He developed one feature in this branch and after that developed two subfeatures in subfeature’s branches. At last he did two refactoring commit of the entire thing. So…
C--D E--F | subfeatures
/ \ / \
B------M1------M2--G--H | feature
/
A-------------------K | master
Usually we rebase feature branches before no-fast-forward merge it into master. But of course this rebase fails. Rebased feature branch became looking like:
B'--C'--D'--E'--F'--G'--H'
/
A--K
Of course pointers of C & D became wrong so I also get two subfeature branches growing ‘from air’. I understand how to fix it if subfeature branches wasn’t merged into feature, but at this time I was confused. I cherry-picked everything in rebased recovery branch and merged all again. Is here a easier way to do it?
Note that you need a git1.7.6+ for
git rebase --preserve-mergesto work properly.rebase --preserve-merges --ontodidn’t work before (“git rebase --preserve-merges --ontodoesn’t preserve merges“)rebase --preserve-mergeshad issue in some instance:or
(That would call for
git rerere)