Here you will learn how to undo a commit (no matter it has been pushed or not have been pushed yet) in a safe and simple way. Changing the last commit gives more choices about how to change the commit in local or remote.
Undo a commit that hasn’t been pushed yet
If you made some mistakes in a commit, you can redo it in a new commit using --amend
option. Just fix your mistakes, stage (add) them and make a new commit as below:
# Redo the last commit.
# --amend, replace the last commit with a new one.
$ git commit --amend
If above solution does not suit you, reset
can be used to just undo the commit (be careful to use reset):
# Discard the last commit. The commit's modifications in working tree are kept.
$ git reset HEAD~
# Discard the last commit. The commit's modifications in staging area are kept.
$ git reset --soft HEAD~
# Discard the last commit. The commit's modifications in working tree are not kept.
$ git reset --hard HEAD~
Undo a commit that has been pushed
If a commit has been pushed to the remote repository, changing the history in the remote repository is not a good idea. You can let Git to make a new commit which reverses the modifications in the last commit.
git revert
command works for you :
# Reverse a commit.
$ git revert -m 1 HEAD
Finally, push it to the remote repository again.