I started work on what I thought would be a minor bug fix on my master branch. However, it has spiraled out of control to the point where I wish I had created a separate branch to do the development in the first place.
So right now what I'd like to do is:
- Create a new branch called (say) "edge"
- Move all the changed / untracked files on master to edge (such that master is unchanged from when I started the bug fix)
- Finish my work on edge, merge back into master
How can I do this?
If you haven't been committing anything yet, you're already in the right position.
- Create a new branch:
git checkout -b edge
- Your files haven't changed. Just
git add
what needs to and commit as usual.
- When you're done committing on
edge
, switch back to master
with git checkout
and git merge edge
.
To add to JB's answer, if you have already started to make a few commits on master for what ended up as being a "edge" effort, you could:
git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply
If you are trying to move the work from master to a branch that already exists, but is behind master, git won't let you switch to the other branch. In this case, do this:
git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch