当我使用git commit --amend
或git rebase -i
时,vim会打开我进行更改。如果我改变主意并退出vim而不做任何更改,则仍然会在git reflog
中显示提交。
如何在不提交任何内容的情况下退出编辑器?
答案 0 :(得分:52)
:cq!
这将强制向Vim发送错误,并且不会保存任何更改。 Link到Vim手册。
答案 1 :(得分:29)
当你没有进行更改并保存它们时,:q!
就足够了(在一个简单的提交中;当你没有修改时),但如果你像我一样,你很可能已经(甚至)无意识地坚持编辑的信息。
:cq[uit]!
命令在Vim中执行此操作。
答案 2 :(得分:17)
要让git在执行git commit --amend
或git rebase -i
时不做更改。
只需删除邮件(并保存)即可。所有git都会查找非空消息,以查看是否发生了有效的提交。由于存在提交消息(因为您之前提交了某些内容),因此git认为它是有效的提交或rebase。
答案 3 :(得分:1)
git应用程序运行编辑器应用程序,如果编辑器应用程序返回失败(退出代码非零),则git应用程序将识别出该错误并停止进一步处理。
在vim中,您可以使用:cq!
vim手册中的
: :cq :cquit
:cq[uit][!] Quit Vim with an error code, so that the compiler
will not compile the same file again.
WARNING: All changes in files are lost! Also when the
[!] is not used. It works like ":qall!" :qall,
except that Vim returns a non-zero exit code.
这也适用于svn! svn和git之间的区别AFAIK是,svn不喜欢空的提交消息,并且当您使用:q!
退出时(即使退出代码为0)也停止了,但是对于git来说这是可以的。对于这两种情况,如果编辑器给出的退出代码非零,那都是不对的。
exitcode是unix / linux中一个非常基本的概念,并且是一切正常(exitcode 0)或出现问题的便捷方法,用于通知调用方应用程序。