Git Commit --amend
Последнее обновление
git commit --amend заменяет самый последний коммит новым, позволяя исправить его сообщение или добавить файлы, которые вы забыли проиндексировать. Он не добавляет второй коммит; он переписывает последний. Поскольку это меняет хеш коммита, амендите только те коммиты, которые вы ещё не запушили.
Попробуйте эти команды в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.
Синтаксис
| Command | What it does |
|---|---|
git commit --amend | Редактирует последний коммит и его сообщение |
git commit --amend -m "new message" | Меняет сообщение последнего коммита прямо в командной строке |
git commit --amend --no-edit | Добавляет проиндексированные файлы, сохраняя то же сообщение |
Частые случаи
| Goal | Command |
|---|---|
| Исправить опечатку в последнем сообщении | git commit --amend -m "fixed message" |
| Добавить забытый файл в последний коммит | git add file, затем git commit --amend --no-edit |
| Амендить уже запушенный коммит (осторожно) | внесите правку, затем git push --force-with-lease |
Часто задаваемые вопросы о git commit --amend
Как изменить сообщение моего последнего коммита?
Выполните
git commit --amend -m "new message", чтобы заменить его прямо в командной строке, или git commit --amend, чтобы открыть редактор и переписать его там. Это переписывает последний коммит с новым сообщением - не делайте этого с уже запушенным коммитом, если не готовы к force push.Как добавить забытый файл в последний коммит?
Проиндексируйте файл командой
git add <file>, затем выполните git commit --amend --no-edit. Флаг --no-edit сохраняет существующее сообщение коммита и просто вносит только что проиндексированные изменения в предыдущий коммит.Создаёт ли git commit --amend новый коммит?
Нет - он заменяет последний коммит, а не добавляет новый. Результат выглядит как один коммит, но технически это новый коммит с новым хешем, который занимает место прежнего. Именно поэтому амендинг общей истории требует force push.
Безопасно ли амендить запушенный коммит?
Только с осторожностью. Амендинг переписывает коммит, поэтому после пуша вам понадобится
git push --force-with-lease, что может нарушить работу всех, кто уже стянул оригинал. В общей ветке предпочтите новый коммит или git revert вместо аменда.Могу ли я потренироваться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить
git commit --amend в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс Git от Coddy также пошагово разбирает исправление коммитов.