Если нужно переписать последний коммит, сохранив правки в рабочей копии, используйте soft/mixed reset; для полного отката — --hard.
Пример
$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ...
$ git commit -c ORIG_HEAD # редактор с сообщением старого коммита
ORIG_HEAD — ссылка на HEAD до reset; удобно для повторного commit с тем же сообщением.
Варианты
git reset --soft HEAD~1 — откат commit, index и файлы без изменений.
git reset --mixed HEAD~1 (default) — index сброшен, файлы на диске сохранены.
git reset --hard HEAD~1 — удаляет незакоммиченные изменения в tracked-файлах.
Итог
Для правки последнего commit: reset → правки → commit; --hard только когда изменения не нужны.