From: Jeff King Date: Sun, 31 Jul 2011 05:53:10 GMT Subject: Re: Automatically identifying the "split" point of a merged branch. Message-ID: <20110731055310.GA14384@sigill.intra.peff.net> In-Reply-To: On Sat, Jul 30, 2011 at 05:54:59PM -0700, Conrad Irwin wrote: > I wanted to introduce this branch onto master to end up with: > > A-o-o-o-o-o-o-o-o-o-E-----------N (master) > \ \ / > \ C'-o-o-D' (topic-rebased) > \ > o-o-B-o-o-o-o-M-o-o(integration) > \ / > C-o-o-D (topic) > > (ASCII art reproduced at http://dpaste.org/GUmM/ lest it be munged) > > While it's easy to create comit N once I have commit D' (with git > merge --no-ff), I found that it's not at all easy to work out where > commit B is in order to do do a rebase --onto master B. If you know M, then B is the merge-base of M^1 and M^2 (i.e., the parents of M). If you don't know M, but do know D, you can find it by walking backwards from "integration" until you find a merge commit with D as its second parent (e.g., by grepping "rev-list --parents"). Make sense? -Peff