Rebasing a merged branch

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

Rebasing a merged branch

From: Peter Krefting <hidden>
Date: 2016-06-15 22:49:06

Hi!

If I slightly modify the example from the git-rebase manual page to look 
like this:

   o---o---o---o  master
          \
           o---o---o---o---o  topicA
            \     /
             A---B---C---D  topicB

(topicA has merged "B" into its history; its first-parent from the line of 
"o"s).

If I now do a "git rebase --onto master topicA topicB", I only get commit C 
and D, as it sees A and B as being part of both branches.

Is there a way to make git rebase pick up A, B, C and D (and only them)?

I.e., I would like "all commits on topicB which are not in topicA's 
--first-parent history".



I eventually came up with

   git rebase --onto master $(git rev-list topicA ^topicB | tail -1) topicB

but am thinking that it ought to be expressable in a simpler way?

-- 
\\// Peter - http://www.softwolves.pp.se/

Re: Rebasing a merged branch

From: Chris Frey <hidden>
Date: 2016-06-15 22:49:06

On Thu, Jul 08, 2010 at 12:52:08PM +0100, Peter Krefting wrote:
Hi!

If I slightly modify the example from the git-rebase manual page to look 
like this:

  o---o---o---o  master
         \
          o---o---o---o---o  topicA
           \     /
            A---B---C---D  topicB

(topicA has merged "B" into its history; its first-parent from the line of 
"o"s).

If I now do a "git rebase --onto master topicA topicB", I only get commit C 
and D, as it sees A and B as being part of both branches.

Is there a way to make git rebase pick up A, B, C and D (and only them)?

I.e., I would like "all commits on topicB which are not in topicA's 
--first-parent history".

I'm no expert on rebase --onto, but aren't you trying to rebase so that
the tree looks like this afterward?


   o---o---o---o  master
            \   \
             \   A---B---C---D  topicB
              \
               o---o---o---o---o  topicA
                \     /
                 A---B
 
In which case, won't this work?

	git checkout topicB
	git rebase master

- Chris

Re: Rebasing a merged branch

From: Peter Baumann <hidden>
Date: 2016-06-15 22:49:06

On Sat, Jul 10, 2010 at 02:55:41AM -0400, Chris Frey wrote:
On Thu, Jul 08, 2010 at 12:52:08PM +0100, Peter Krefting wrote:
quoted
Hi!

If I slightly modify the example from the git-rebase manual page to look 
like this:

  o---o---o---o  master
         \
          o---o---o---o---o  topicA
           \     /
            A---B---C---D  topicB

(topicA has merged "B" into its history; its first-parent from the line of 
"o"s).

If I now do a "git rebase --onto master topicA topicB", I only get commit C 
and D, as it sees A and B as being part of both branches.

Is there a way to make git rebase pick up A, B, C and D (and only them)?

I.e., I would like "all commits on topicB which are not in topicA's 
--first-parent history".

I'm no expert on rebase --onto, but aren't you trying to rebase so that
the tree looks like this afterward?


   o---o---o---o  master
            \   \
             \   A---B---C---D  topicB
              \
               o---o---o---o---o  topicA
                \     /
                 A---B
 
In which case, won't this work?

	git checkout topicB
	git rebase master

- Chris
No, this won't work. You will also rebase A^ (the o) commit in both branches
A and B.

AFAIK doing the following should do the trick:

git checkout topicB
git rebase --onto master A~1 topicB
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help