How to abort 'git commit --amend'?

我不小心用了 git commit --amend。我的文本编辑器已打开,等待输入。我知道,当我现在关闭它(不更改现有的提交消息)时,提交将被修改。我怎样才能终止这个过程?

这篇博客文章 说,我可以简单地删除提交消息,然后提交将无效并被忽略。是这样吗?还有其他选择吗?

30988 次浏览

正确。保存没有内容的文件将中止修改。

删除消息。一个空消息将中止任何提交(修改只是一个’特殊’提交)

是的,删除邮件并退出与 :wq。行开始与 #,你可以离开它。

最终编辑显示


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Sun Sep 5 17:09:09 2021 +0800
#
# On branch main
#
# Initial commit
#
# Changes to be committed:
#       new file:   b
#
# Changes not staged for commit:
#       modified:   b
#

退出后的输出

Aborting commit due to empty commit message.

为此添加另一个答案,还可以这样做

:cq

中止 Vim 中的修改,修改后的代码告诉 用错误代码退出,导致 Git 中止:

error: There was a problem with the editor 'Vim'.
Please supply the message using either -m or -F option.

来自 Vim 的文档:

: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.

如果删除提交消息(不需要删除以 #开头的消息) ,您将中止 git commit --amend命令。您将得到如下输出:

Aborting commit due to empty commit message.

注意:
删除内容和做 :q!仍然提交。我不完全理解 ViM,所以,不能说为什么。

您还必须将最后的空/剩余内容写入文件,可以这么说。

同意将文件内容保存为空将中止提交,但我想添加删除 vi/vim run 中的所有行:

: 1,$d

then do

校对: WQ

这将返回到之前的提交,但我们不会丢失对代码或文件的更改:

git reset HEAD@{1}