git commit -a confusion

时间:2010-11-12 13:03:46

标签: git vim

我正在使用Git Bash并且在尝试输入'git commit -a'时发生的事情。

看起来VIM打开了编辑我的提交消息但是如何保存并实际完成此提交?我输入编辑器并按Enter键,但它只是创建了另一行。

仅供参考:我在Mac上使用VM Fusion,因此我的一些密钥可能会有所不同

4 个答案:

答案 0 :(得分:42)

这是一个关于VIM的问题而不是git本身(如果我没有记错的话)

VIM使用多种模式,退出插入模式,按ESC或^ C.要保存并退出文件,请使用ZZ:x:wq

只是为了完成:git commit -a将首先将所有跟踪和更改的文件内容添加到索引中,然后创建一个提交(在vim中指定提交消息后 - 或者您选择的编辑器)

答案 1 :(得分:26)

离开VIM(命令模式 - > :wq)。

-a标志的作用类似于:

git add -u
git commit ...

-m标志指定提交消息。该消息是必需的,因此如果您没有传递(git commit -m "My message"),将打开默认文本编辑器(您可以在git配置中更改它)并且您必须编写提交消息,然后保存并退出编辑。

答案 2 :(得分:14)

要保存您的提交,请像平常一样保存并退出文件。

:wq

如果你改变主意并希望中止退出而不保存。

:q!

您不必使用VIM,但您可以设置编辑器,例如以下内容会将编辑器git用于textmate。

git config --global core.editor textmate

答案 3 :(得分:3)

正如其他人所说,Vim正在打开,因此您可以添加一条消息,其中包含您正在提交的更改的相关信息。看来您系统上的默认编辑器是Vim。设置Git,以便在使用:wq,:x或其他命令关闭Vim后,它将包含您键入的任何消息并保存在Vim中。

除了Andrew Myers建议更改Git调用的编辑器之外,您还可以在命令行中包含一条简单的消息,如下所示:

git commit -am 'This is my message for the commit. . . '

如果你这样做,Git根本不会打开文本编辑器。