Git Reset

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.

Keep changes

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 ~1

git reset --soft HEAD~

Another alternative is to use HEAD^. The ^ alone is a shortcut for ^1.

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

Discard merge

Got into local merge trouble? Then bail out.

git reset --merge