Как отменить коммит в Git?
Отменить коммит можно тремя способами в зависимости от ситуации.
Если коммит ещё не отправлен в общий репозиторий (push не делался), используйте git reset. Команда git reset --soft HEAD~1 отменит последний коммит, но сохранит изменения в индексе (staging area) — вы сможете изменить сообщение и закоммитить заново. Команда git reset --mixed HEAD~1 (это поведение по умолчанию) отменит коммит и уберёт изменения из индекса, но оставит их в рабочей директории. Команда git reset --hard HEAD~1 полностью удалит и коммит, и изменения — используйте её только если точно уверены, что код не нужен.
Если коммит уже отправлен в общий репозиторий, используйте git revert. Команда git revert HEAD создаёт новый коммит, который отменяет изменения предыдущего. Это безопасно для командной работы, потому что история не переписывается, а добавляется новый коммит отмены. Можно отменить несколько коммитов: git revert HEAD~3..HEAD.
Если нужно изменить только сообщение последнего коммита или добавить забытый файл, используйте git commit --amend. Эта команда заменяет последний коммит новым с тем же содержимым, но другим сообщением или дополнительными файлами. Не используйте --amend для коммитов, которые уже отправлены в общий репозиторий — это перепишет историю и создаст проблемы у других разработчиков.
Правило: reset — для локальных коммитов, revert — для общих, amend — для исправления последнего коммита до push.