Re: Find successor of common ancestor
- From
Johan Herland <johan@herland.net>
- Date
- Jul 16, 2010, 12:19 UTC
- Message-ID
- <201007161419.39469.johan@herland.net>
- In-Reply-To
- <20100716090613.GB22894@nibiru.local>
On Friday 16 July 2010, Enrico Weigelt wrote:
> * Santi Béjar <santi@agolina.net> wrote: > > On Fri, Jul 16, 2010 at 10:29 AM, Enrico Weigelt <weigelt@metux.de>
wrote:
Show 16 quoted lines
> > > Hi folks, > > > > > > > > > suppose the following situation: > > > > > > I've forked some branch A into B, now A and B have evolved > > > independently for quite some time into A' and B'. Now I'd like > > > to rebase B' along A' history line step by step - first on A+1, > > > then A+3, ... until A' (that's what I'd call zip-rebase). > > > > This is just what "git rebase" does: > > > > $ git checkout B' > > $ git rebase A' > > Yes, but I need to find out A+1 for my zip-rebase.
IINM you have the following situation
A0---A1---A2---A3---A4 <-- A' \ B1---B2---B3--B4 <-- B'
...and you want to rebase B' (i.e. B1 through B4), first onto A1, then onto A2, the onto A3, and finally onto A4. I have no idea WHY you would want to do this (rebasing directly onto A4 (like Santi suggests) is much cheaper), but you can certainly coax Git into doing it, anyway.
To list commits A1, A2, A3, A4 (in that order), do:
git rev-list --reverse B'..A'
You can now loop over the results like this:
git checkout B'
for a in $(git rev-list --reverse ..A'); do
git rebase $a
doneHope this helps,
...Johan
-- Johan Herland, <johan@herland.net> www.herland.net