git commit --amend

Тема дорожной карты · Изучи Git

git commit --amend — это команда, которая позволяет исправить последний коммит в вашем репозитории. Она может быть использована для добавления в коммит подготовленных изменений или для изменения сообщения коммита. Если вы используете опцию --no-edit, то сообщение коммита останется без изменений. После применения команды git commit --amend, создается новый объект-коммит с новым SHA-хешом, что может вызвать конфликты при пуше, если коммит уже был опубликован. Поэтому важно применять git commit --amend только к локальным, неопубликованным коммитам.

Как это работает

Команда git commit --amend позволяет вам переписать последний коммит, добавив в него изменения, которые были подготовлены с помощью команд git add или git restore. Если вы хотите отменить изменения в рабочей директории, вы можете использовать команду git restore <file>. Если вы хотите отменить изменения, которые были добавлены в стадию коммита, вы можете использовать команду git restore --staged <file>. После этого вы можете переписать последний коммит с помощью команды git commit --amend. Однако, если коммит уже был опубликован, то его нельзя будет переписать с помощью команды git commit --amend, так как это приведет к конфликту при пуше. В этом случае вам потребуется использовать команду git push --force-with-lease, чтобы переписать опубликованный коммит.

Если вам нужно отменить коммит, вы можете использовать команды git reset --soft HEAD~1, git reset --mixed HEAD~1 или git reset --hard HEAD~1. Команда git reset --soft отменяет коммит, оставляя изменения в стадии коммита. Команда git reset --mixed отменяет коммит, удаляя изменения из стадии коммита. Команда git reset --hard отменяет коммит, удаляя изменения из стадии коммита и из рабочей директории. Если вам нужно отменить конкретный коммит, вы можете использовать команду git revert <sha>, которая создаст новый коммит, который отменяет изменения, сделанные в указанном коммите.

Когда применять

Команда git commit --amend должна использоваться только для исправления ошибок в последнем коммите, таких как опечатки в сообщении коммита или добавление забытого файла до пуша. Если вам нужно исправить ошибки в коммитах, которые уже были опубликованы, вам потребуется использовать команду git revert <sha>, которая создаст новый коммит, который отменяет изменения, сделанные в указанном коммите. Если вам нужно отменить изменения, которые были сделаны в коммите, вы можете использовать команды git reset --soft, git reset --mixed или git reset --hard.

Типичные ошибки

Одной из самых распространенных ошибок при использовании команды git commit --amend является попытка переписать опубликованный коммит, что приведет к конфликту при пуше. В этом случае вам потребуется использовать команду git push --force-with-lease, чтобы переписать опубликованный коммит. Другой распространенной ошибкой является использование команды git reset --hard на ветке, которая содержит несохраненные изменения, что приведет к удалению этих изменений. В этом случае вам потребуется использовать команду git reflog, чтобы восстановить удаленные изменения.

Связанные понятия

Полезные ресурсы