ariejan de vroom

Git: remove, reset and rollback commits

8 September 2011

We’ve all been there, you committed changes you now regret. If you didn’t share those commits with anyone yet, you’re safe. Let me show you how to remove commits from your local repository. I’ll also include an example how to roll back commits you already did share with others. ~ Use git log to see your most recent commits. Let’s say you want to revert the last three commits, you can run the following command:

git reset --hard HEAD~3

If you only want the last commit to be removed:

git reset --hard HEAD~1

HEAD~1 is a shorthand for the commit before head. But, it’s also possible to roll back to a specific commit using the SHA hash.

git reset --hard d3f1a8

Please note that all your uncommitted changes will be lost when you perform git reset --hard. You might want to use git stash to save your uncommitted changes.

In case you already pushed your changes to a remote repository, you can’t use git reset, because it will wreak havoc with other people’s repositories later. Instead, you could revert your commit (e.g. create a new commit, undoing a previous one).

Note that git revert does not walk back into history, but only works on a specific commit or range of commits. To use my previous examples:

git revert HEAD~3..HEAD
git revert HEAD~1..HEAD
git revert d3f1a8..master

Optionally specify the --no-commit option to see what’s being reverted.