Introduction to git reset¶
HEAD is the commit we are currently at.
A hard reset removes all not yet committed changes, which means it also removes staged changes (they are staged, not commit).
git rest --hard HEAD~1 moves HEAD to point to the previous commit,
which has the effect of deleting the last commit.
git rest --hard without any refs implies HEAD in this context,
therefore, it is the same as git rest --hard HEAD.
Again, a hard reset DESTROYS any uncommitted changes, be they stated or not.