It happens quite often to me that I start committing things and only afterwards decide I should have created a new branch.
git status says something like:
Your branch is ahead of 'origin/master' by 4 commits.
but I don’t want to push to origin/master but rather create a new branch. (Of course this works for any other branch, not named master)
So you can use this sequence of commands:
git checkout -b newbranch
git push origin newbranch
git checkout master
git reset --hard origin/master
1. creates a new branch pointing to the current changes (and switches to it)
2. pushes this new branch including the changes to the server
3. switches back to the branch master
4. and undoes the changes that were made locally
The important thing to know is that the changes remain in the repository because a branch is merely a pointer to a commit.
Afterwards you can continue to commit to master, for example:
(screenshots done with a fork of gitx)