Too Long; Didn't Read
I'm quite sure all of these happened to you at least once. You committed a change with the wrong message (typo, wrong tense, etc.), wrong files (something missing, too many files, etc), too early (feature isn't complete yet) or you just didn't want to (wrong code, just needs to be deleted). Sure, you can just add a new commit, but in the long run this will mess up your git history. I'll also show you how to restore hard deleted changes.