Это говорит:
Когда вы сохраните и выйдете из редактора, он вернет вас обратно к последней фиксации в этом списке и выведет вас в командную строку со следующим сообщением:
$ 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
предназначен для перехода к следующей задаче в процессе перебазирования после того , как вы изменили первую фиксацию .
Кроме того , Gregg Lind упоминает в своем ответе reword
командованияgit rebase
:
Заменив команду «pick» на команду «edit», вы можете указать, что 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
вызовы .
git rebase --continue
переходит к следующей задаче в процессе перебазирования после того, как вы изменили первую фиксацию.Как предложил Грегг Линд, вы можете использовать reword, чтобы вам было предложено изменить только сообщение фиксации (в противном случае оставьте фиксацию нетронутой):
Вот
n
список последних n коммитов.Например, если вы используете
git rebase -i HEAD~4
, вы можете увидеть что-то вроде этого:Теперь замените pick на reword для коммитов, сообщения которых вы хотите редактировать:
Выйдите из редактора после сохранения файла, и затем вам будет предложено редактировать сообщения для коммитов, которые вы отметили перефразированием , по одному файлу на сообщение. Обратите внимание, что было бы намного проще просто отредактировать сообщения фиксации при замене
pick
наreword
, но это не имеет никакого эффекта.Узнайте больше на странице GitHub об изменении сообщения о фиксации .
источник
FWIW, git rebase interactive теперь имеет опцию "reword", которая делает это намного менее болезненным!
источник
reword
Почему при использовании git просто не позволяет редактировать сообщения коммитов в этом файле со списком коммитов? Вместо этого он запустит редактор с одним файлом сообщения фиксации в каждойreword
строке. В этом нет необходимости. Даже если другие действия, кромеpick
илиreword
требуют запуска внешних команд,reword
не потребуют этого.Просто хотел предоставить для этого другой вариант. В моем случае я обычно работаю над своими отдельными ветвями, а затем сливаюсь с мастером, и отдельные коммиты, которые я делаю для своих локальных, не так важны.
Из-за ловушки git, которая проверяет соответствующий номер билета в Jira, но учитывает регистр, мне не удалось отправить свой код. Кроме того, фиксация была сделана давно, и я не хотел подсчитывать, сколько коммитов нужно вернуться при перебазировании.
Итак, я создал новую ветку из последнего мастера и сжал все коммиты из проблемной ветки в одну фиксацию в новой ветке. Для меня это было проще, и я думаю, что было бы неплохо иметь это здесь в качестве справочника в будущем.
От последнего мастера:
затем
Ссылка: https://github.com/rotati/wiki/wiki/Git:-Combine-all-messy-commit-into-one-commit-before-merging-to-Master-branch
источник
rebase -i
примерно 2 часа и безуспешно. Моя фиксация была за 18 коммитами, как вы можете себе представить. Это был более простой и удобный способ, который я мог найти без необходимости перебазирования. Спасибо друг!Вот очень хороший Gist, который охватывает все возможные случаи: https://gist.github.com/nepsilon/156387acf9e1e72d48fa35c4fabef0b4
Обзор:
источник