Как прервать git rebase изнутри vim во время интерактивного редактирования

138

Когда я делаю интерактивный ребаз, например

git rebase -i HEAD~3

открывается интерактивный редактор rebase (в моем случае vim), чтобы я мог редактировать коммиты, чтобы перебазировать

pick c843ea2 Set Vim column limit to 80 (OS X)
pick fc32eac Add Bash alias for `pbcopy` (OS X)
....

Если я сейчас решу, что хочу прервать ребазинг и выйти из vim, использую :qребаз в любом случае. Я использую GIT-версию 1.9.0.msysgit.0на Windows.

Конечно, я могу просто удалить все pickстроки, но это может быть много, если я перебазирую более длинную историю. Есть ли другой способ?

Как выйти из интерактивного редактора rebase (vim) и отменить его?

Рене Линк
источник
Вы бы предпочли использовать другой редактор, например Блокнот? Если так, у меня есть решение для этого
Стивен Пенни
5
git rebase --abort
vanduc1102
@ vanduc1102 У меня работает, хотелось бы, чтобы это был ответ!
C Bauer

Ответы:

258

Если вы выйдете из редактора с кодом ошибки, ребаз будет прерван.

Чтобы выйти с кодом ошибки на vim, выполните

:cq

Смотрите здесь и vimdoc здесь .

Тельмо Коста
источник
6
Меньше печатать, тот же результат
Зак Постен
44

Просто удалите все строки, которые не являются комментариями из файла. Затем сохраните его в заданном по умолчанию пути и выйдите из редактора.

В результате git ничего не сделает в этом ребазе.

Для удаления всех строк в vim вы можете использовать

:%d|x

Затем сохраните и выйдите.

удалить все строки файла в Vim

Как выйти из редактора Vim?

VIM - несколько команд в одной строке

Стивен Пенни
источник
это не касается коммитов слияния. попробуйте выполнить интерактивную перебазировку, чтобы включить хотя бы одну фиксацию слияния и сравнить результат с исходным состоянием.
Младен Б.
9

Если вы используете Notepad ++ в Windows, например:

CtrlAвыбрать все, затем Delили Backspaceудалить и CtrlSсохранить. Git прервет ребаз, если файл пуст.

Вы также можете нажать CtrlCв командной строке, где запущен git, чтобы остановить текущую команду rebase. Затем бегите, git rebase --abortчтобы вернуть его.

CodeManX
источник
это общий способ решения этой проблемы, независимо от того, используете ли вы vim или любой другой редактор. большое спасибо! :)
Младен Б.
3

Удалите весь текст на экране текстового редактора, затем сохраните файл с указанным по умолчанию путем.

mcandre
источник