$ git commit -m "Something terribly misguided" # (1)
$ git reset HEAD~ # (2)
<< edit files as necessary >> # (3)
$ git add ... # (4)
$ git commit -c ORIG_HEAD # (5)
$ git push origin master --force # (6)
1. Это то, что мы хотим отменить.
2. Эта команда оставляет состояние рабочей директории (на диске) точно таким же, но отменяет последний коммит и оставляет отмененные изменения в секции unstaged. HEAD~ -- это сокращение для HEAD~1. Также можно использовать флаг --soft, тогда отмененные изменения будут в секции staged.
3. Вносим необходимые правки в файлы.
4. Добавляем к новому коммиту нужные файлы.
5. Делаем новый коммит, при этом сообщение будет взято из предыдущего (отмененного) коммита (потому что отмененный коммит скопирован и сохранен под именем ORIG_HEAD).
6. Если неправильный коммит был запушен, то пушим с перезаписью.