I'm mostly with you, except, `git reset --hard` is relatively easy to recover from. `git reflog` generally can fix most `git reset --hard` commands.
On the other hand. `git checkout .` with unstaged changes tends to be the most common way I've seen people lose code via git.