Desfazer o último commit, preservando as alterações nos arquivos

git reset --soft HEAD~1

Desfazer o primeiro commit, preservando as alterações nos arquivos

git update-ref -d HEAD

Desfazer o último commit, não preservando as alterações nos arquivos

git reset --hard HEAD~1

Criar branch a partir do stash

git stash branch testchanges

Desfazer alterações em um único arquivo (sem commit)

git checkout HEAD -- my-file.txt