Question: I'm trying to wrap my head around this.

From what I can tell, "git reset --hard HEAD~1" will remove the last commit, and that commit won't be seen in "git log".

And "git revert HEAD" will put me in nano where I can edit the commit message and also it saves the revert as a new commit in "git log"

Am I right?

Answer: 
Actually, `git revert` will produce a **new** commit that **cancels** the effects of another given commit, replaying the negative version of its changeset. In particular, *git revert* won't do what *mercurial* would.

You can view it as a cancelation "a la Wikipedia": reverting something is assumed as a modification just like the others and can be dated.

`git reset`, however, will bring a branch pointer back to a given position. According to the parameter you specify, `--soft`, `--mixed` (default) or `--hard`, git will respectively modify only the branch pointer, the branch and the state of the index, or the branch, index and working directory content. This is therefore what's used to totally get rid of the tip of a branch but the command can act beyond this sole case.

Note that even if you unreference a commit using `git reset --hard` or something else, this commit will persist in the object collection until a garbage collector is run and be discarded only if it's old enough (typically three months).

So remember that if you've done that by accident, there's always a way to recover your commits if you don't wait too long.
you are right.... they might give you the same "end result" in terms of what the working tree looks like... but the resulting history of the project is radically different.... If you asked me, if you just noticed that the last commit is not needed, just remove it from history altogether (`git reset --hard`). unless there's a *major* reason not to do it. Some people say that once it's published, it shouldn't be taken back... my take is that any seasoned git user knows how to rebase stuff with --onto and specifying a revision to *skip* so even if it's published, you should just remove it (letting other developers know what you did).... but that's just my assumption/opinion.