Как откатить коммит в Git

«Как откатить коммит в Git» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В работе я использую две основные команды, в зависимости от того, нужно ли сохранить историю изменений для коллег.

1. git revert — безопасный откат с сохранением истории Эту команду я применяю, когда коммит уже отправлен в общий репозиторий (например, в main). Она создает новый коммит, который инвертирует изменения указанного.

# Откатить последний коммит
git revert HEAD

# Откатить конкретный коммит по его хешу
git revert a1b2c3d

После этого нужно сделать git push. Это предпочтительный способ для исправления ошибок в продакшене, так как история не перезаписывается и все видят, что изменение было отменено.

2. git reset — перезапись локальной истории Использую только в локальной ветке, чтобы исправить еще не опубликованные коммиты. Опасно: удаляет коммиты из истории.

# Откатить последний коммит, оставив изменения в рабочей директории (unstaged)
git reset HEAD~1
# Или git reset --mixed HEAD~1 (то же самое по умолчанию)

# Откатить последний коммит, оставив изменения проиндексированными (staged)
git reset --soft HEAD~1

# Полный откат — удалить коммит И все изменения в файлах (использовать с крайней осторожностью!)
git reset --hard HEAD~1

После --soft или --mixed можно сразу сделать новый, исправленный коммит. --hard безвозвратно стирает изменения.