Re: How to revert one of multiple merges
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- Oct 19, 2009, 15:19 UTC
- Message-ID
- <4ADC8387.9010808@drmicha.warpmail.net>
- In-Reply-To
- <19162.32265.738503.382638@lisa.zopyra.com>
Bill Lear venit, vidit, dixit 18.10.2009 04:31:
Show 47 quoted lines
> Branch A, B, C each have 20 commits, 0-19. > > Branch v1.0.0 created, then merge of A, B, C performed. > > After testing, we realize that the branch B is not ready for > production release and we'd like to remove it from branch > v1.0.0. > > If I do > > % git merge A B C > > I get a single commit: > > % git log -p > > commit 1644a0b98c01869aa83e59aa41374c22098c47b6 > [...] > Date: Fri Oct 16 09:52:32 2009 -0500 > > Merge branches 'A', 'B' and 'C' into v1.0.0 > > [20 x 3 commits] > > If I do > > % git merge A > % git merge B > % git merge C > > Then: > > % git log -p > > commit 8946edd381384d0882221c87b5b3b7bf47127d70 > [...] > Date: Sat Oct 17 21:28:36 2009 -0500 > > Merge branch 'B' into v1.0.0 > > commit 076ed422443e3684e564f7cae2b92e4538088ae6 > [...] > Date: Sat Oct 17 21:28:35 2009 -0500 > > Merge branch 'A' into v1.0.0 > > but no "Merge branch 'C' into v1.0.0".
Do you get any commits after the merge of B? If yes, then v1.0.0 got fast-forwarded (you can avoid that using --no-ff). If no, C was contained in v1.0.0 already.
In both cases, it's not clear how C could have been "ready" when B was not.
> And so, I'm faced with git rebase -i posing some unanswerable questions > to our release manager. She cannot easily remove B from the merge after > doint either merge A B C, or merge A, merge B, merge C.
The way you described the situation there are no commits after the merges. So, why not reset to before the merge and do a "git merge A C"?
Michael