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

问题描述 投票:0回答:5

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

git rebase -i HEAD~3

rebase 交互式编辑器(在我的例子中是 vim)打开,让我编辑对 rebase 的提交

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

如果我现在决定要中止变基并使用

:q
退出vim,变基无论如何都会开始。我在 Windows 上使用 git 版本
1.9.0.msysgit.0

当然,我可以删除所有

pick
行,但如果我重新建立更长的历史记录,可能需要做很多事情。还有别的办法吗?

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

git vim git-rebase
5个回答
370
投票

如果您退出编辑器并出现错误代码,则变基操作将中止。

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

:cq

参见这里和vimdoc这里


53
投票

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

因此 git 在此 rebase 中不会执行任何操作。

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

:%d|x

然后保存并退出。

删除 Vim 中文件的所有行

如何退出Vim编辑器?

VIM - 同一行上多个命令


13
投票

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

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

您也可以在 git 运行的命令提示符下按 CtrlC 来停止当前的 rebase 命令。然后运行

git rebase --abort
将其恢复。


3
投票

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


0
投票

当然,我可以删除所有选择行,但如果我重新设置更长的历史记录,可能需要做很多事情。还有别的办法吗?

是的,您可以在第一行中添加错误,例如从 pick 中删除“p”:

ick c843ea2 Set Vim column limit to 80 (OS X)
pick fc32eac Add Bash alias for `pbcopy` (OS X)
....
  • 保存并退出(由于出现错误,变基不会自动完成)
  • git rebase --继续(您的错误现在应该显示)
  • git rebase --abort
  • 完成
© www.soinside.com 2019 - 2024. All rights reserved.