git reset --soft HEAD~1git reset HEAD~1git reset --hard HEAD~1git revert HEAD--soft нужен чаще всего: «закоммитил не то сообщение» или «забыл файл» — снимаете
коммит, правки остаются подготовленными, коммитите заново.
--hard невосстановим обычными средствами — точнее, коммит ещё около 30 дней
виден в git reflog, но файлы, которые не были закоммичены, пропадут насовсем.
Если коммит уже ушёл в общую ветку, reset не подходит: он переписывает историю,
и у всех остальных ветка разъедется. Тогда revert — он создаёт новый коммит,
отменяющий изменения, и история остаётся линейной.