Originally, I had something like this:
C---D (branch1)
/
A---B (master)
Because I needed to work on something else (which was unrelated to branch1
), I decided to make a new branch (called branch2
). I made a couple of commits on branch2
and then pushed them.
Now, my intention was to have master
as a root of branch2
. However, I accidentally did this:
E---F--G (branch2)
/
C---D (branch1)
/
A---B (master)
Is there a clean way to make branch2
stem directly from master
, as shown below?
E---F--G (branch2)
|
| C---D (branch1)
|/
A---B (master)
The ASCII graphs in your question have an uncanny resemblance to those in the second example describing the usage of the
--onto
flag in thegit-rebase
man page:That example indicates that you will land in the desired situation by running
However, you also write that you've already pushed
branch2
to some remote when your repo looked like your second ASCII graph. Are you sharing the remote in question with anybody else? In that case, think twice (or thrice!) before rebasing, as it's a form of history rewriting, and you should never rewrite history has been shared.