Adventures in Git: Move Commits from Master to New Branch
The other night, I sat down with Git to solve what turned out to be a
very simple problem: what if you've started making commits to your
master branch, but want to move your work into a feature branch? After
staring at git log
for a few minutes, I had a forehead-slapping
moment. Here's one way to move recent commits into a branch:
Start with a clean master, based off origin/master:
{ "hash": "a" },
{ "hash": "b" },
{ "hash": "c" }
Make a few commits of your own:
{ "hash": "a" },
{ "hash": "b" },
{ "hash": "c" },
{ "hash": "d" },
{ "hash": "e" },
{ "hash": "f" }
Now, let's move these commits to a branch. Simply create a new branch at the current commit, then reset master back to the state of origin/master.
(master)$ git branch my-feature
(master)$ git reset --hard origin/master
{ "hash": "a" },
{ "hash": "b" },
{ "hash": "c" },
{ "hash": "d", "branch": "feature" },
{ "hash": "e", "branch": "feature" },
{ "hash": "f", "branch": "feature" }
That's all. No git rebase
, no git cherry-pick
, just make your branch
and reset master.