Solved: Move the most recent commit(s) to a new branch with Git

Question:

How do I move my recent commits on master to a new branch, and reset master to before those commits were made? e.g. From this:
To this:

Best Answer:

Moving to an existing branch


If you want to move your commits to an existing branch, it will look like this:
You can store uncommitted edits to your stash before doing this, using git stash. Once complete, you can retrieve the stashed uncommitted edits with git stash pop

Moving to a new branch


WARNING: This method works because you are creating a new branch with the first command: git branch newbranch. If you want to move commits to an existing branch you need to merge your changes into the existing branch before executing git reset --hard HEAD~3 (see Moving to an existing branch above). If you don’t merge your changes first, they will be lost.
Unless there are other circumstances involved, this can be easily done by branching and rolling back.
But do make sure how many commits to go back. Alternatively, you can instead of HEAD~3, simply provide the hash of the commit (or the reference like origin/master) you want to “revert back to” on the master (/current) branch, e.g:
*1 You will only be “losing” commits from the master branch, but don’t worry, you’ll have those commits in newbranch!
Lastly, you may need to force push your latest changes to main repo:
WARNING: With Git version 2.0 and later, if you later git rebase the new branch upon the original (master) branch, you may need an explicit --no-fork-point option during the rebase to avoid losing the carried-over commits. Having branch.autosetuprebase always set makes this more likely. See John Mellor’s answer for details.

If you have better answer, please add a comment about this, thank you!

Source: Stackoverflow.com