Rebase a whole tree from one commit to another?

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

Rebase a whole tree from one commit to another?

From: Dirk Süsserott <hidden>
Date: 2016-06-15 22:46:46

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

Re: Rebase a whole tree from one commit to another?

From: Andreas Ericsson <hidden>
Date: 2016-06-15 22:46:47

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.

Re: Rebase a whole tree from one commit to another?

From: Clemens Buchacher <hidden>
Date: 2016-06-15 22:46:47

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help