I started working on my master branch thinking that my task would be easy. After a while I realised it would take more work and I want to do all this work in a new branch. How can I create a new branch and take all these changes with me without dirtying master?
If you hadn't made any commit yet, only (1: branch) and (3: checkout) would be enough.
Or, in one command:
git checkout -b newBranch
As mentioned in the
git reset man page:
$ git branch topic/wip # (1) $ git reset --hard HEAD~3 # (2) $ git checkout topic/wip # (3)
master" branch. You want to continue polishing them in a topic branch, so create "
topic/wip" branch off of the current
masterbranch to get rid of those three commits.
topic/wip" branch and keep working.
Note: due to the "destructive" effect of a
git reset --hard command (it does resets the index and working tree. Any changes to tracked files in the working tree since
<commit> are discarded), I would rather go with a:
$ git reset --soft HEAD~3 # (2)
, to make sure I'm not losing any private file (not added to the index).
--soft option won't touch the index file nor the working tree at all (but resets the head to
<commit>, just like all modes do).