Move your latest commits to a separate branch

14 August 2012

The situation is pretty straightforward. You have been making commits for that new feature in your master branch. Naughty you!

Let’s assume you want to have this:

A - B - (C) - D - E - F

C was the last commit you pulled from origin and D, E and F are commits you just made but should have been in their own branch. This is what you wanted:

A - B - (C)
           \ D - E  F

Step 1: Assuming you’re at F on master, create a new branch with those commits:

git branch my_feature_branch

Then, still on master, reset back to commit C. This is 3 commits back.

git reset --hard HEAD~3

Okay, you’re master is now back at C, which you lasted pulled, and the my_feature_branch includes D, E and F. Just checkout my_feature_branch and continue work as usual. I’m sure no one saw what you just did.