Subject: Re: Rebasing multiple branches

From: Enrico Weigelt <[email-masked]>
Date: Wed, 22 Dec 2010 15:36:55 +0100

* Johannes Sixt <[email-masked]> wrote:
> Am 12/21/2010 14:40, schrieb Leonid Podolny:
> >         B--o--o--o--o--o--o  <--branch A
> >        /                   \
> > o--o--A--o--E  <--master    C--o--o--o--D  <--branch C
> >        \                   /
> >         C--o--o--o--o--o--o  <--branch B
> > 
> > I would like to rebase all three branches A, B and C onto commit E,...
> 
> git rebase master A
> git rebase master B
> git merge A
> git rebase -i HEAD C
> 
> The last rebase I propose as interactive so that you can remove those
> commits before D~3 that you have already rebased, because they are likely
> to conflict unnecessarily, and you would --skip them anyway.

Why not this way ?

git checkout D
git rebase -p -i D~3 --onto C'

(C' is the merged branch of A' and B').

So:

git checkout branch_A -b rebasing_A
git rebase master			# rebase old A to master
git checkout branch_B -b rebasing_B
git rebase master			# rebase old B to master
git checkout -b rebased_merge
git merge rebasing_A			# we're on B', merge in A'
git checkout branch_C
git rebase -p -i C --onto rebased_merge # set D~3..D ontop of it

cu
-- 
----------------------------------------------------------------------
 Enrico Weigelt, metux IT service -- http://www.metux.de/

 phone:  +49 36207 519931  email: [email-masked]
 mobile: +49 151 27565287  icq:   210169427         skype: nekrad666
----------------------------------------------------------------------
 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------