I made a bunch of commits to the master and realized after the fact that they should have been in a branch.
I've looked at various things about rebasing and merging and resetting the master. But no attempts at manipulation have yielded a history that looks like what I'm trying to do.
My attempts lead me to believe it requires some combination of rebase --onto
and reset --hard
to move the master back in time. But my understanding of Git's branching leaves something to be desired. Part of doing this is to learn how I can use it.
Should be noted none of the changes that I'm trying to move have been pushed out.
Current
* remote/trunk
--o--a--b--c--d--e--f <- master
|
o <- remote branch foo
Desired Outcome
* remote/trunk
--o <- master
|
o--a--b--c--d--e--f <- remote branch foo
A variation on Martin's answer that won't necessarily be applicable to your situation, but I wanna post it anyway :)
Suppose you forgot to create the branch at commit o
, so you have:
x--y--z--o--a--b--c--d--e--f master
|
+
[forgot to make a branch here]
And then you realized that what you really wanted was:
x--y--z--o master
|
+--a--b--c--d--e--f topic
What you can do in this case is create a branch at o
using it's hash:
git branch topic # creates new branch 'topic' - will be at commit `f`
git checkout o -b newmaster # creates new branch called newmaster pointing on commit `o` (please replace `o` with the actual hash)
git branch -M newmaster master # force rename newmaster to master (means master points on hash `o`)
You'll be at the master branch (commit o
), so as a last step you can:
git checkout topic
The hash of course can be just the first 5 characters ..
It shouldn't matter much that you're using git-svn
, what really matters is that you haven't published your master branch at any point after o
A branch in git is really nothing but a pointer to a commit. That's why branching is so cheap: you just create a pointer, and you have a branch.
I don't know about tracking remote branches though, you might need to set that up after renaming/moving your branches.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With