Menu
Coddy logo textTech

Git: отменить последний коммит

Последнее обновление

Чтобы отменить самый последний коммит, решите, что должно произойти с его изменениями. Оставьте их в индексе с помощью git reset --soft HEAD~1, оставьте вне индекса простым git reset HEAD~1 или отбросьте их с помощью git reset --hard HEAD~1. Если коммит лишь немного неверен, git commit --amend исправит его на месте. Если он уже запушен, используйте git revert вместо переписывания истории. Чтобы отменить более старый коммит или несколько коммитов сразу, смотрите страницу «git отменить коммит».

Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего не нужно устанавливать.

Отмена последнего коммита сдвигает HEAD на шаг назад - режим решает, останутся ли изменения в индексе, выйдут из него или будут отброшены.

Выберите, что делать с изменениями

GoalCommand
Отменить коммит, оставить изменения в индексеgit reset --soft HEAD~1
Отменить коммит, оставить изменения вне индексаgit reset HEAD~1
Отменить коммит, отбросить измененияgit reset --hard HEAD~1
Исправить последний коммит (сообщение или файлы)git commit --amend
Отменить уже запушенный коммитgit revert HEAD

Разобранный пример

Отмените последний коммит и закоммитьте его заново с более понятным сообщением.

StepCommandResult
1git reset --soft HEAD~1Коммит удалён, изменения остаются в индексе
2git commit -m "clearer message"Закоммитить те же изменения заново

Частые вопросы об отмене последнего коммита в Git

Как отменить последний коммит, но сохранить изменения?
Выполните git reset --soft HEAD~1. Это удаляет последний коммит, но оставляет его изменения в индексе, так что вы можете сразу закоммитить их заново. Чтобы изменения оказались вне индекса в вашем рабочем дереве, используйте git reset HEAD~1 (режим по умолчанию).
Как отменить последний коммит и удалить изменения?
Выполните git reset --hard HEAD~1. Это удаляет коммит и отбрасывает его изменения из вашего рабочего дерева. Это разрушительно: если работа может понадобиться, используйте вместо этого --soft или восстановите её позже через git reflog.
А если мне нужно только исправить сообщение коммита?
Используйте git commit --amend. Он снова открывает последний коммит, чтобы вы могли отредактировать его сообщение (и при необходимости заново проиндексировать файлы) без создания отдельного коммита. Избегайте amend для уже запушенного коммита, так как это переписывает историю.
Как отменить последний коммит после того, как я его запушил?
Используйте git revert HEAD. Revert создаёт новый коммит, который отменяет предыдущий, оставляя историю нетронутой - безопасный выбор для общих веток. Reset запушенного коммита заставит всех остальных согласовывать переписанную ветку.
Могу ли я потренироваться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнять эти команды в настоящей оболочке в вашем браузере - ничего не нужно устанавливать. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает отмену изменений.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ