devroom.io/drafts/2011-09-08-git-remove-reset-and-rollback-commits.md

38 lines
1.6 KiB
Markdown
Raw Normal View History

2013-03-22 22:53:57 +00:00
---
title: "Git: remove, reset and rollback commits"
kind: article
slug: git-remove-reset-and-rollback-commits
created_at: 2011-09-08
tags:
- git
- revert
- reset
- rollback
---
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][1] 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.
[1]: http://ariejan.net/2008/04/23/git-using-the-stash/