如何在交互式编辑期间从vim中终止git rebase


138

当我进行交互式变基时,例如

git rebase -i HEAD~3

重新基准化交互式编辑器(在我的情况下为vim)打开,让我编辑要重新基准化的提交

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

如果现在我决定要中止rebase并使用:qrebase 退出vim,则无论如何都要启动。我1.9.0.msysgit.0在Windows上使用git版本。

当然,我可以删除所有pick行,但是如果我将更长的历史记录作为基准,则可能要做很多事情。还有另一种方法吗?

如何退出rebase交互式编辑器(vim)并中止rebase?


您是否希望使用其他编辑器,例如记事本?如果是这样,我对此有解决方案
史蒂文·彭尼

5
git rebase --abort
vanduc1102 '17

@ vanduc1102为我工作,希望它是一个答案!
C Bauer

Answers:


256

如果使用错误代码退出编辑器,则重新定位将中止。

要在vim上退出并显示错误代码,请执行

:cq

这里和vimdoc 这里


6
更少的打字,同样的结果
Zach Posten

44

只需删除文件中所有非注释行。然后将其保存到提供的默认路径并退出编辑器。

结果git在这个变基中将什么都不做。

要删除vim中的所有行,您可以使用

:%d|x

然后保存并退出。

删除Vim中文件的所有行

如何退出Vim编辑器?

VIM-同一行上的多个命令


合并提交不是这种情况。尝试进行交互式变基,以至少包括一个合并提交,并将结果与​​原始状态进行比较。
Mladen B.

9

例如,如果您在Windows上使用Notepad ++:

CtrlA选择所有内容,然后按DelBackspace删除并CtrlS保存。如果文件为空,Git将中止rebase。

您也可以CtrlC在运行git的命令提示符下单击以停止当前的rebase命令。然后运行git rebase --abort以还原它。


无论您使用的是vim还是任何其他编辑器,这都是解决此问题的通用方法。非常感谢!:)
Mladen B.

3

删除文本编辑器屏幕中的所有文本,然后使用提供的默认路径保存文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.