# Rebase a whole tree from one commit to another?

3 messages from 2009-05-15 to 2009-05-16. Participants: Dirk Süsserott, Andreas Ericsson, Clemens Buchacher.
Thread: https://gitlist.dev/t/19361

## Dirk Süsserott, 2009-05-15 19:38

Subject: Rebase a whole tree from one commit to another?
Message-ID: <4A0DC4CD.1030401@dirk.my1.cc>
URL: https://gitlist.dev/e/4A0DC4CD.1030401%40dirk.my1.cc

```
Hi alltogether.

Let's say I have the following history:

     | | | | branch-c
     | | | |
     | | |/  branch-b
     | | |
     | |/    branch-a
     | |
     |/
     | master

Now I checkout master, do some changes, and commit them to the master 
branch. Let's call that new-master:

    | new-master
    | | | | | branch-c
    | | | | |
    | | | |/  branch-b
    | | | |
    | | |/    branch-a
    | | |
    | |/
     \| master

I want to rebase my branches a, b, c to the new master. The clumsy way 
would be:

     git rebase new-master branch-a
     git rebase branch-a   branch-b
     git rebase branch-b   branch-c

The question is: Is there a way to rebase the whole tree (master -> 
branch-a -> branch-b -> branch-c) from master to new-master with a 
single command?


Cheers
   -- Dirk

```

## Andreas Ericsson, 2009-05-16 07:35

Subject: Re: Rebase a whole tree from one commit to another?
Message-ID: <4A0E6CC5.5090503@op5.se>
URL: https://gitlist.dev/e/4A0E6CC5.5090503%40op5.se
In-Reply-To: <4A0DC4CD.1030401@dirk.my1.cc>

```
Dirk Süsserott wrote:
> Hi alltogether.
> 
> Let's say I have the following history:
> 
>     | | | | branch-c
>     | | | |
>     | | |/  branch-b
>     | | |
>     | |/    branch-a
>     | |
>     |/
>     | master
> 
> Now I checkout master, do some changes, and commit them to the master 
> branch. Let's call that new-master:
> 
>    | new-master
>    | | | | | branch-c
>    | | | | |
>    | | | |/  branch-b
>    | | | |
>    | | |/    branch-a
>    | | |
>    | |/
>     \| master
> 
> I want to rebase my branches a, b, c to the new master. The clumsy way 
> would be:
> 
>     git rebase new-master branch-a
>     git rebase branch-a   branch-b
>     git rebase branch-b   branch-c
> 
> The question is: Is there a way to rebase the whole tree (master -> 
> branch-a -> branch-b -> branch-c) from master to new-master with a 
> single command?
> 

No. You could merge all the branches that forked from master, rebase
the merged branch to new-master and then undo the merge-commit though,
but that would still mean three commands (and most likely some
conflict resolution). Assuming you have (a lot) more than three
branches, this might be a way forward for you.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Register now for Nordic Meet on Nagios, June 3-4 in Stockholm
 http://nordicmeetonnagios.op5.org/

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.

```

## Clemens Buchacher, 2009-05-16 13:49

Subject: Re: Rebase a whole tree from one commit to another?
Message-ID: <20090516134906.GA19110@localhost>
URL: https://gitlist.dev/e/20090516134906.GA19110%40localhost
In-Reply-To: <4A0DC4CD.1030401@dirk.my1.cc>

```
On Fri, May 15, 2009 at 09:38:53PM +0200, Dirk Süsserott wrote:
>
>     git rebase new-master branch-a
>     git rebase branch-a   branch-b
>     git rebase branch-b   branch-c
>

You probably want something like

	git rebase new-master branch-a
	git rebase --onto branch-a branch-a@{1} branch-b
	git rebase --onto branch-b branch-b@{1} branch-c

instead, because if you have any conflicts during rebase, the rebased
commits will no longer be recognized as identical, causing even more
conflicts in the following rebases.

```
