Я пытался отредактировать старое сообщение о фиксации, как объяснено здесь.
Вещь состоит в том, что теперь, когда я пытаюсь работать 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'.
Какие-либо идеи?
Он говорит:
Когда вы сохраняете и выходите из редактора, он перематывает вас назад к последней фиксации в этом списке и перетаскивает вас в командную строку со следующим сообщением:
$ 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
вызывает .
FWIW, git rebase interactive теперь имеет опцию "reword", что делает это гораздо менее болезненным!