You can do more things with reset, but the above covers the typical cases. And now to the last thing, git revert. What does it do? git revert creates a new commit that is the opposite of the commit it names.

git revert COMMIT-SHA creates and commits a new commit from an old commit reversing the changes.

git reset (--mixed) changes what HEAD (in current branch) points to without changing the files. This will make git status show the current working directory as full of modified files. This is relative to the new HEAD.

git reset --soft does the same as git reset --mixed but it also adds the files to the index, as in git reset COMMIT-SHA; git add .

git reset --hard changes what head points to and also resets all the files in the current working directory to match that of the current HEAD. This is similar to git reset COMMIT-SHA; git co -f .