Some notes on how to reset stuff with git. There is a whole world of resetting with git, see the git-reset Documentation if you want to go deeper. The following are a few of the common day to day reset commands that I use for various scenarios.
Reset all local changes
When you have been messing around and want to reset all your local changes that have not yet been committed.
git reset --hard
Resetting the last local commit
Want to undo your last local commit? Forgot to remove some logging? Realised your commit is horrendous and you cannot bear to push it? Reset it. There is a great explanation in the Tower documentation on undoing the last commit.
Reset the last commit and keep the changes that you made.
git reset --soft HEAD~1
Alternatively you can drop the
1 here as
~ alone is a shortcut for
git reset --soft HEAD~
Another alternative is to use
^ alone is a shortcut for
git reset HEAD^
There is a good explanation here on the meaning and difference between the usage of the caret and tilde symbols.
Discard the last commit
Just get rid of the last commit entirely. Make sure you really don't want to lose any changes you made.
git reset --hard HEAD~1
--hard Resets the index and working tree. Any changes to tracked files in the working tree since <commit> are discarded. git-reset Documentation
Got into local merge trouble? Then bail out.
git reset --merge