当我使用git commit --amend
orgit rebase -i
时,vim 会打开让我进行更改。如果我改变主意并退出 vim 而不做任何更改,仍然会进行提交,它会显示在git reflog
.
如何在不提交任何内容的情况下退出编辑器?
当我使用git commit --amend
orgit rebase -i
时,vim 会打开让我进行更改。如果我改变主意并退出 vim 而不做任何更改,仍然会进行提交,它会显示在git reflog
.
如何在不提交任何内容的情况下退出编辑器?
当您没有进行更改并保存它们时,:q!
就足够了(在简单的提交中;当您不修改时),但是如果您像我一样,很可能您已经(甚至是无意识地)保留了已编辑的消息。
如果编辑器以非成功退出状态退出,Git(和其他使用 Vim 编辑消息的此类工具)将中止整个过程(并忽略对消息的任何已保存更改)。您可以在 Vim 中使用该:cq[uit]!
命令执行此操作。
如果您想退出并出现错误且不保存,您可能希望使用cq
without 。!
vim
让 git 在执行时不进行更改git commit --amend
或git rebase -i
.
只需删除消息(并保存)。git 所做的只是查找非空消息以查看是否发生了有效提交。由于有提交消息(因为您之前提交过某些内容),git 认为它是有效的提交或变基。
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,这没关系。如果编辑器给出非零退出代码,这两者都不好。
exitcodes 是 unix/linux 中一个非常基本的概念,如果一切正常(exitcode 0)或出现问题,它也是通知调用者应用程序的简单方法。