← Все вопросы

Как изменить сообщение последнего коммита через git amend?

Задан 1 месяц назад1.2к просмотров2 ответа
10

Закоммитил с опечаткой в сообщении — написал «fix bdu» вместо «fix bug». Как поменять текст последнего коммита, не делая новый? Слышал про --amend, но не понимаю как.

2 ответа

12
✓ Принятый ответ — помог автору

Самый простой способ — git commit --amend.

Если хочешь просто переписать сообщение:

git commit --amend -m "fix bug"

Это заменит сообщение последнего коммита на новое. Без флага -m откроется текстовый редактор, где ты отредактируешь старое сообщение вручную:

git commit --amend

Бонус: --amend умеет не только менять текст. Если ты забыл добавить файл в последний коммит, сделай так:

git add забытый_файл.py
git commit --amend --no-edit

Флаг --no-edit означает «сообщение не трогай, просто допиши файл в коммит».

Важная деталь: --amend на самом деле создаёт новый коммит с новым хешем, заменяя старый. Поэтому если коммит уже запушен на GitHub, обычный push не пройдёт — придётся делать git push --force (или безопаснее --force-with-lease). А форсить общую ветку, где работают другие, нельзя.

Частая ошибка: менять amend'ом уже запушенный коммит в общей ветке (например main) — у коллег разъедется история. Меняй так только локальные или личные ветки.

4

Если коммит ещё не запушен — git commit --amend -m "новый текст" и всё. Хеш поменяется, но локально это безопасно.

Если уже запушил в свою личную ветку, после amend нужен форс-пуш:

git push --force-with-lease

--force-with-lease безопаснее обычного --force: он не затрёт чужие коммиты, если кто-то успел запушить раньше тебя.

Ваш ответ

Войдите, чтобы ответить на вопрос.