Введение
При работе с 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. Предыдущий коммит больше не будет существовать в текущей ветке.
Как правило, вам следует избегать изменения уже отправленного коммита, так как это может вызвать проблемы у людей, которые основывают свою работу на этом коммите. Перед изменением push-фиксации рекомендуется проконсультироваться с другими разработчиками.
Если вы изменили самое последнее сообщение push-фиксации, вы должны принудительно его изменить.
Зайдите в репозиторий.
Отредактируйте последнее сообщение push-фиксации:
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
Вывод
Чтобы изменить самое последнее сообщение фиксации, используйте команду commit --amend
, а чтобы изменить более старое или несколько сообщений фиксации, используйте команду git rebase -i HEAD~N
Не изменяйте приостановленные коммиты, так как это может доставить массу неприятностей вашим коллегам.