如何关闭Git提交编辑器?

365

我刚刚执行了一个命令 $ git commit,它打开了一个新的编辑器。但是我正在尝试关闭这个新的提交编辑器,怎么做?我正在使用Git for Windows。


5
避免使用编辑器的一种方式是使用"-m"选项。例如,在执行"$ git add <your_changes>"之后,执行"$ git commit -m "my changes; I'm avoiding the editor!""。 - Quetzalcoatl
@Quetzalcoatl 在 -m 中如何输入新行? - Koray Tugay
@KorayTugay:这是一个好问题,但我不知道。通常,我会劝阻过长的提交消息(例如带有换行符),并鼓励使用一句话的消息。简短而精练的提交消息往往更具洞察力。 - Quetzalcoatl
@Koray Tugay 在第一个双引号后按 Enter 键,然后提交命令不会结束。 - lam vu Nguyen
实际上,这取决于你的shell。在类Unix系统上,大多数shell的行为都像你描述的那样,但在Windows上,你可能需要向阿撒托斯献祭和/或安装一些来自沉没大陆的第三方工具。 - undefined
15个回答

404

在编辑器中保存文件。如果使用的是Emacs:按下CTRLX CTRLS来保存,然后按下CTRLX CTRLC退出;如果是vi:按下:wq

在Windows / vi中,请先按esc键退出编辑模式。


4
除了保存文件外,用户还需要关闭编辑器,因此对于Emacs来说,实际上是使用 Ctrl-X Ctrl-C 组合键。 - user4815162342
2
更新了...我知道,但像大多数Emacs命令一样,它们已经深入我内心,以至于我忘记了它们是什么...我只是执行它们。 - tpg2114
1
如果你使用emacsclient,你可以用 C-x # 关闭它。 - azzamsa
1
谢谢,对于Windows Bash来说,必须明确以下两点:1. 退出;2. 保存更改。 - Juan Monsalve
这个插入模式是我可以在我的Windows机器上禁用的吗? - Rez.Net
显示剩余6条评论

320

我也遇到了一些问题。在Linux上,我使用Ctrl+X(并按下Y确定),然后回到Shell准备pull/push。

Windows GIT Bash中,Ctrl+X没有任何作用,我发现它的工作方式与vi/vim相似。按i进入内联插入模式,将描述输入到顶部,按esc退出插入模式,然后输入:x!(现在光标位于底部),按enter保存并退出。

如果改为输入:q!,则会退出编辑器而不保存(commit将被中止)。


30
这是我在Windows操作系统中的答案。 - lode
10
esc :x! - 这不仅难以发现,就像有人在玩功能藏匿游戏。 - Tristan
在Windows Git Bash上完美运行,这对我来说就是答案。 - tiagorockman
对于 Mac,请参见:https://dev59.com/8GYr5IYBdhLWcg3w--6U#60973107。 - zabop
这里没有特定于Linux、Windows或Mac的内容。听起来你在Linux上配置了nano (?) 作为你的编辑器,并且在Windows上没有配置编辑器,这导致git选择了它的默认编辑器vi - undefined

110

在编写提交信息后,只需按下Esc键,然后输入:wq:wq!,再按下Enter键即可关闭Unix文件。


7
这个解决方案适用于 Windows 上的 Git Gui bash。 - ocrampico
这让我想起了大学时代,我们做了一些Unix vi编辑的事情,长时间编写后使用了一些 :wq 命令。 - Irf
4
在 Vim 中,:x:wq 的快捷方式。 - rnevius

29

更好的办法是将编辑器配置为您熟悉的东西 (以 gedit 为例):

git config --global core.editor "gedit"

您可以像这样阅读当前配置:

git config core.editor
您也可以通过命令行添加提交消息。
git commit -m "blablabla"

并且编辑器在一开始就不会被打开。


25

git commit 命令后,进入编辑器,先按 i 然后开始输入。提交消息后按下 Ctrl + c,然后输入 :wq


你应该编辑你的提交信息。然后按照上面的步骤操作。这个解决方案适用于Windows系统。 - Shihab Uddin
这里没有特定于Windows的内容。如果你的编辑器是vi或其衍生版本,这就是你保存并退出的方式。 - undefined

20

在Mac电脑上,按下shift+Z shift+Z(两次大写字母Z)。


1
这不是特定于Mac的问题,而是特定于编辑器的问题。在vi中,这将会在不保存文件的情况下中止操作。 - undefined

5

替代 Nano 的工具(可能会让您的生活更轻松):

在 Windows 上,使用记事本。在命令提示符中键入:

git config core.editor notepad

在 Ubuntu / Linux 上,使用文本编辑器(gedit)。在终端窗口中键入:

git config core.editor gedit


Gedit是一个相对平庸的编辑器;你应该找一个你喜欢的,然后安装并将其配置为你的默认编辑器。 - undefined

4

您只需点击按键。

首先按下ESC + Enter,然后按下:x + Enter。


又是一个多余的vi答案。 - undefined

2

我遇到了这个问题,收到了一个类似 ">" 的提示,无法提交。我将注释中的 " 替换为 ',然后就可以正常工作了。

希望这能帮助到其他人!


1
啊哈!我也被这个“>”提示卡住了。从你的评论中,我发现由于我在评论中使用了缩写词中的撇号,终端正在等待我关闭引号!终于我自由了! - Kevin Scharnhorst

1
作为“保存并退出”的替代方案,您可以使用git-commit的git-commit-commit函数,默认绑定到C-c C-c。它会保存文件并关闭它。之后,您仍然需要使用C-x C-c关闭emacs,如前所述。我目前正在尝试找出如何使emacs自动退出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接