Какой командой в Git отменяется коммит?

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

Ответ

Для отмены коммита в Git есть две основные команды, выбор зависит от того, опубликован ли коммит.

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

# Отменить конкретный коммит по его хешу
git revert <commit-hash>

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

2. git reset — для локальных, неопубликованных коммитов. Эта команда перемещает указатель ветки, фактически "стирая" коммиты из истории. Используйте ее осторожно.

# --soft: отменяет коммит, оставляя изменения в staged (индекс)
git reset --soft HEAD~1

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

# --hard: полностью удаляет коммит и все связанные с ним изменения
git reset --hard HEAD~1

Ключевое правило: Используйте git revert для коммитов, которые уже были отправлены в общий репозиторий (например, в main). Используйте git reset только для локальных экспериментов, которые еще никуда не пушились.