I've pulled code down from my repo which has messed things up. I'd like to revert my entire project to my last local commit. How would I do this?
3 Answers
This will reset everything to your current commit (getting rid of all changes, staged or otherwise:
git reset HEAD --hard
This will reset everything to the previous commit (also getting rid of all changes, staged or otherwise)
git reset HEAD^ --hard
the ^ next to HEAD means one commit before HEAD, HEAD being where you are currently. You can go two commits back by using ^^, or three with ^^^. Additionally you can use a tilde to specify the number of commits: ~3 for three commits back.
git reset HEAD~3 --hard
Also keep in mind that the --hard option means that these commands will throw away any changes you have that are not stashed.
 
    
    - 1,295
- 11
- 18
- 
                    4It's always nice to see appropriate safety warnings attached to the suggestion to use `git reset --hard`, as in this answer - a worrying number of stackoverflow answers don't... – Mark Longair May 15 '11 at 12:16
- 
                    1Massive caveat of "If you've done a pull since your local commit this will nuke your local commit" :) see this to undo said ball ache http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html – Ed Bishop Nov 17 '15 at 16:11
- 
                    @EdBishop Nice thing about Git is that you nearly never actually lose anything – Chris Rasys Feb 23 '16 at 02:53
- 
                    @ChrisRasys indeed, it's saved us a few times :D – Ed Bishop Feb 24 '16 at 12:37
Locate your last local commit in git log and run git reset --hard <commit sha1>.
It will delete all the local changes you haven't commited, and will move the HEAD to this commit.
 
    
    - 1
- 1
 
    
    - 7,525
- 40
- 44
git pull can fetch and merge multiple commits.  To go back to your previous local state (rather than back n-commits) you can use the reflog.  git reset --hard @{1}
 
    
    - 698
- 4
- 4
