Измените старое сообщение о фиксации на Мерзавце

Я пытался отредактировать старое сообщение о фиксации, как объяснено здесь.

Вещь состоит в том, что теперь, когда я пытаюсь работать rebase -i HEAD~5 это говорит interactive rebase already started.

Таким образом я пробую: git rebase --continue но получил эту ошибку:

error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba
fatal: Cannot lock the ref 'refs/heads/master'.

Какие-либо идеи?

125
задан Pablo Fernandez 10 December 2009 в 22:16
поделиться

2 ответа

Он говорит:

Когда вы сохраняете и выходите из редактора, он перематывает вас назад к последней фиксации в этом списке и перетаскивает вас в командную строку со следующим сообщением:

$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with

Это не значит:

введите еще раз git rebase -i HEAD ~ 3

Попробуйте не набрать git rebase -i HEAD ~ 3 при выходе из редактор, и он должен работать нормально.
(в противном случае в вашей конкретной ситуации может потребоваться git rebase -i --abort , чтобы сбросить все настройки и позволить вам повторить попытку)


Как Дэйв Фогт упоминает в комментарии, git rebase --continue предназначен для перехода к следующей задаче в процессе перебазирования, после того, как вы изменили первую фиксацию .

Также, Грегг Линд упоминает в свой ответ команду reword из git rebase :

Заменив команду «выбрать» на команду «изменить», вы может указать git rebase остановиться после применения этой фиксации, чтобы вы могли редактировать файлы и / или сообщение фиксации, изменить фиксацию и продолжить перебазирование.

Если вы просто хотите отредактировать фиксацию сообщение для фиксации, замените команду " pick "командой" reword ", начиная с Git1.6.6 (январь 2010) .

Он делает то же самое» edit 'выполняется во время интерактивного перебазирования, за исключением , он позволяет редактировать только сообщение фиксации, не возвращая управление оболочке . Это чрезвычайно полезно.
В настоящее время, если вы хотите очистить сообщения коммитов, вам необходимо:

$ git rebase -i next

Затем установить для всех коммитов значение «редактировать». Затем на каждом:

# Change the message in your editor.
$ git commit --amend
$ git rebase --continue

Использование ' reword ' вместо ' edit »позволяет пропустить git-commit и git-rebase вызывает .

115
ответ дан 24 November 2019 в 01:01
поделиться

FWIW, git rebase interactive теперь имеет опцию "reword", что делает это гораздо менее болезненным!

51
ответ дан 24 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: