Я хотел бы изменить сообщение конкретной фиксации, я знаю, что с помощью следующей команды я могу изменить сообщение последней сделанной фиксации:
git commit --amend -m "your new message"
Но как я могу изменить сообщение о сделанном предпоследнем коммите? Это возможно?
Вы можете использовать
git rebase
для перехода к старой фиксации. Например, если у вас есть эти коммиты:и вы хотите изменить,
Commit 2
вы должны сделать следующее:В появившемся редакторе (по умолчанию) поставьте
edit
,r
илиreword
вместоpick
в строке коммита, который вы хотите изменить.Что-то такое:
Внесите свои изменения (если есть), а затем сделайте новый коммит:
И после этого:
Чтобы вернуться к своему
HEAD
предыдущему.Осторожность:
Это не рекомендуется делать в общедоступных репозиториях, поскольку если есть программисты, которые основывают свои изменения на последующих коммитах, у них будет своего рода призрачный код, и это вызовет много путаницы. Но в вашем случае, если вы просто собираетесь изменить сообщение, то особых проблем нет. Вы можете увидеть эти рекомендации здесь.
То, что вам нужно сделать, это
rebase
интерактивный(-i
) с использованием той же командыreword
.Сначала запустите
git rebase -i <hash-del-commit>~1
, чтобы попросить сделатьrebase
текущую ветку интерактивной из предыдущей фиксации (~1
), которую вы хотите изменить. Это уволит вас$EDITOR
со списком всех коммитов, которые существуют от этого до вершины вашей ветки, с указаниемpick
хэша и сообщения каждого из них. Что-то типа:Измените
pick
наr
илиreword
в строке коммита для редактирования. Что-то такое:Сохраните файл и выйдите из редактора, и он
git
вернется к этомуcommit
и снова запустится$EDITOR
, но на этот раз с сообщением фиксации. Что-то типа:Отредактируйте сообщение, чтобы сделать его таким, как вы хотите, сохраните файл, выйдите из редактора и
git
примените все отсутствующие коммиты, чтобы ваша ветка выглядела так же, за исключением обновленного сообщения.Не забывайте, что вы изменяете историю своего репозитория , поэтому, если вы опубликовали коммит, для которого вы редактируете сообщение, или любой из его преемников, вы можете создать конфликты с остальной частью вашей команды.
Это подразумевает переписывание истории. Необходимо учитывать, что ЗАПРЕЩАЕТСЯ переписывать историю коммитов, которые уже находятся в файле
remote
.Тем не менее, вы можете переписать историю и, следовательно, изменить сообщение коммита, используя команду
git-rebase
со следующим синтаксисом:Затем git открывает редактор с содержимым, подобным следующему:
В этом редакторе вы меняете выбор слова на слово reword
Позже Git откроет редактор, в котором вы сможете зафиксировать новое сообщение вашего коммита.
Как только вы закроете редактор, git перезапишет коммиты post-reword и обновит вашу текущую ссылку на ветку.
Ваше здоровье