Here's how to fix that....
git reset HEAD~1 --hard # move the head back before your commit git push -f # make git accept it git fetch # get latest git reset origin/master # undo non-pushed commit git checkout -b NEW_BRANCH_NAME # create new branch for file changes git stash save 'moving committed changes to NEW_BRANCH_NAME' # workstation looks like it did before you made changes git cherry-pick COMMIT_HASH # grab your changes via cherry-pick git push -u origin NEW_BRANCH_NAME # push NEW_BRANCH_NAME with changes to remote repo
You will probably want to run make note of the git hash created by the original commit BEFORE running these commands. You can run the following to get that hash value:
$ git log
This assumes you want to push your changes into a NEW_BRANCH_NAME, which will likely get merged into the master branch after a pull request and code review.
Assuming this works, you should delete the stash you made using
$ git stash drop
ReferencesIs it possible to retroactively turn a set of commits into a branch?
Squash my last X commits together using Git
This work is licensed under the Creative Commons Attribution 3.0 Unported License.