Ответ
Для отмены коммита в 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 только для локальных экспериментов, которые еще никуда не пушились.