当VI在屏幕上等待提交消息时,如何停止Git提交?


203

我已经要求Git从git bash中执行提交,它像往常一样调出了VI。

我现在希望取消提交,从这一点上如何防止继续进行提交?


值得补充的是,您需要在进入:q!Vim 之前先按Esc 。
M_Merciless

Answers:


331

您有两种选择:

  • 提供一个空的提交消息。如果是新提交,但您尚未保存消息,则可以简单地使用:q!(退出而不保存)。如果您已经保存(或要修改以前的提交),只需删除整个日志消息并再次保存。这可以在Vim 中用ggdG+ 来完成:wq

  • 使用非零的退出代码使编辑器退出。在Vim中,您可以使用:cq(退出并显示错误代码)。

值得注意的是,您始终可以将工作副本重置为提交之前的状态git reset HEAD^


95
:cq是业务。由于某些原因,无论我是否使用:q,git都会犁开!
Sirex

2
git reset HEAD ^将放弃本地修改
juanmf

2
:q!可能不起作用,因为已经有预定义的消息,您只是在编辑它。
帕皮波

打ic:如果git reset HEAD^要求更多,您的外壳可以将^解释为行的延续。尝试使用git reset "HEAD^"git reset HEAD^^git reset HEAD~1替代此答案:stackoverflow.com/questions/14203952/git-reset-asks-more
杰克·史蒂文斯-哈斯

75
  • :q!修改提交时不起作用。它不会更新提交消息,但是会执行修改:-(
  • :cq 完全终止修正案。

1
希望我可以再加上+1。我来过很多次,因为我的修正案提出了错误的建议。
Wyrmwood

8

总结一下:

  • 创建新的提交(即git commit)时,请使用退出:q!
  • 进行修改(即git commit --amend)时,例如,按住v并使用箭头键将其选中,然后按Delete键,即可删除提交消息(仅前几行以#开头)。退出:wq以应用更改!如果您使用:q!更改,则这些更改将丢失,并且将使用以前的提交消息。

使用VIM时,两种情况都可以退出:cq-VIM会退出并显示错误代码,并且提交将被中止。

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.