При работе с Git вы можете столкнуться с ситуацией, когда вам нужно отредактировать сообщение коммита. Существует ряд причин, по которым вы хотите внести изменения, например, исправление опечатки, удаление конфиденциальной информации или добавление дополнительной информации.
В этой статье объясняется, как изменить сообщение о самых последних или старых коммитах в Git.
Изменение самого последнего коммита
Команда git commit —amend позволяет вам изменить самое последнее сообщение о коммите.
Не изменять коммит
Чтобы изменить сообщение самого последнего коммита, который не был передан в удаленный репозиторий, передайте его снова, используя флаг —amend.
- Перейдите в каталог хранилища в вашем терминале.
- Выполните следующую команду, чтобы поправить (изменить) сообщение о последнем коммите:
git commit --amend -m "New commit message."
Команда выполняет перезапись самого последнего коммита новым.
Опция -m позволяет записать новое сообщение в командной строке без открытия редактора сессии.
Перед изменением сообщения о коммите вы также можете добавить другие ранее забытые изменения:
git add .git commit --amend -m "New commit message."
Измененный коммит
Измененный коммит — это новый объект с другим SHA-1. Предыдущий коммит больше не будет существовать в текущей ветке.
Как правило, вам следует избегать внесения изменений в коммит, который уже выдвинут, поскольку это может вызвать проблемы у людей, которые основывают свою работу на этом коммите. Хорошей идеей будет проконсультироваться со своими коллегами-разработчиками перед изменением принудительного коммита.
Если вы изменили сообщение о самом последнем введенном коммите, вам придется принудительно нажать его.
- Перейдите в хранилище.
- Исправьте сообщение о последнем введенном коммите:
git commit --amend -m "New commit message."
- Принудительно нажмите, чтобы обновить историю удаленного хранилища:
git push --force branch-name
Изменение более старых или нескольких коммитов
Если вам нужно изменить сообщение о старых или нескольких коммитах, вы можете использовать интерактив git rebase для изменения одного или нескольких старых коммитов.
Команда rebase переписывает историю коммитов, и настоятельно не рекомендуется перебазировать коммиты, которые уже переданы в удаленный репозиторий Git .
- Перейдите в хранилище, содержащее сообщение фиксации, которое вы хотите изменить.
- Введите git rebase -i HEAD~N, где N число коммитов для выполнения перебазирования. Например, если вы хотите изменить 4-й и 5-й последние коммиты, введите:
git rebase -i HEAD~5
Команда отобразит последние X коммитов в текстовом редакторе по умолчанию :
pick 43f8707f9 fix: update dependency json5 to ^2.1.1 pick cea1fb88a fix: update dependency verdaccio to ^4.3.3 pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2 pick c5e078656 chore: update dependency flow-bin to ^0.109.0 pick 11ce0ab34 fix: Fix spelling. # Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)
- Переход к линии сообщения фиксации, который вы хотите изменить, и замените pick на reword:
reword 43f8707f9 fix: update dependency json5 to ^2.1.1 reword cea1fb88a fix: update dependency verdaccio to ^4.3.3 pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2 pick c5e078656 chore: update dependency flow-bin to ^0.109.0 pick 11ce0ab34 fix: Fix spelling. # Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)
- Сохраните изменения и закройте редактор.
- Для каждого выбранного коммита открывается новое окно текстового редактора. Измените сообщение о коммите, сохраните файл и закройте редактор.
fix: update dependency json5 to ^2.1.1
- Принудительно отправить изменения в удаленный репозиторий:
git push --force branch-name
Заключение
Чтобы изменить самое последнее сообщение о коммите, используйте команду git commit —amend и, чтобы изменить более старое или несколько сообщений о коммите git rebase -i HEAD~N.
Не вносите изменения в принудительные коммиты, так как это может вызвать массу проблем у ваших коллег.
Если вы столкнулись с проблемой или у вас есть отзыв, оставьте комментарий ниже.