由于提交消息为空而中止提交


81

作为新手git用户,当我尝试提交我的工作时

git commit -a -v

然后在编辑器中输入提交消息,然后关闭文件,并出现以下错误:

Aborting commit due to empty commit message.

我已经阅读了解决该问题的几乎所有主题,更改了编辑器,基本上尝试了所有方法,但没有任何帮助。我该怎么办?

我注意到的一件事是,在使用notepad ++尝试整个过程时,无法保存文件。

可能的解决方法是这样的:

git commit -am "SomeComment"

但是通过这样做,我觉得我有点废除了使用git的目的。我想正确记录我的更改。


您正在使用哪个版本的git for Windows?
Josh Lee

3
这里唯一的无效方法是不输入相关的提交消息。git commit -am“ SomeRelevantComment”
NickSuperb 2012年

尝试从编辑器中保存文件时会遇到什么错误?
Karl Bielefeldt 2012年

我在Windows 7上处理C:\ Program Files下的文件时遇到了这个问题。Windows 7可以防止在此目录(及其下的任何位置)中写入数据,并且由于在.git目录中创建了用于写入提交消息的临时文件(COMMIT_MSG或其他内容),因此会失败。
Gauthier 2013年

“记录”?嗯...
Patrick

Answers:


138

在Git的配置中设置编辑器时,请确保传递参数“ -w”以强制Git等待您将在自定义编辑器上键入的提交消息。

git config --global core.editor "[your editor] -w"

1
崇高文本上的Samesies。2.尝试了一堆其他东西,这是第一个起作用的方法。谢谢扎克。
Scott Silvi 2014年

使用崇高文字2或gedit作为测试为我修复。

崇高的文字3:-w在引号中,天才。正如我在许多其他论坛和示例中所看到的那样,我在引号之外使用它感到困惑。
danjah 2014年

7
对于macvim,使用mvim -f而不是该-w标志。
nishanthshanmugham 2015年

1
当您使用现有的gedit实例设置提交消息时,似乎有时会出现错误,因此"gedit -w"对我不起作用,但是"gedit -s"还是"gedit --standalone"起作用。
jfv

42

如果您的提交注释是以#字符开头的一行,则可能发生此错误。例如,当我在提交消息文本编辑器窗口中看到以下内容时,出现此错误:

#122143980 - My commit message was here. The number to the left is a Pivotal Tracker story/ticket number that I was attempting to reference in the commit message.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch [MYBRANCH]
# Your branch is up-to-date with 'origin/[MYBRANCH]'.
#
# Changes to be committed:
#   modified:   [MYFILE1]
#   modified:   [MYFILE2]
#

当然,问题是我的提交消息以 #字符,因此git将该行视为注释,因此看到该提交消息为空,因为它除了注释外什么也没有!

解决方法是使用除以下字符之外的其他字符启动我的提交消息 #

在我的特定情况下,将Pivotal ID放在方括号中会使git和Pivotal都满意:

[#122143980] My commit message here. 

3
GitLab具有与问题相同的语法,我习惯在我的提交消息之前加上问题标识符,这是一个问题,问题编号的括号也可以在GitLab上正常工作。
2017年

2
呵呵,太好了,您钉了它!这让我感到不安,但我看到我确实已经从GitHub发行号开始了提交,#xxxx Fixed: ...并将其更改为Fixed #xxxx: ...确实已解决。谢谢。
Slartibartfast

我已经使用引用了github问题#123 some message。在提交期间可以工作,但是稍后在rebase通过via编辑器提交时失败。
Stafford Williams

20

对于Visual Studio Code

git config --global core.editor "code -w"

对于原子

git config --global core.editor "atom -w"

对于崇高

git config --global core.editor "subl -w"

1
可能想检查您的前两种方法之间的差异
mcalex17年

您又如何回到原始设置?或者您如何阅读当前设置?
蒂姆(Tim)

8

如果您想提交适当的(长而多行的注释)文档,但又不想使用该-m选项,则可以做的事情(以及我在准备commits时所做的事情)是:

  • (在进行更改时)将文档写在单独的文件“ doc-commit”中(或您要称呼的任何名称)中
  • 提交' git commit -a -F /path/to/doc-commit')

简而言之,请使用单独的文件(可以位于您想要的任何路径)作为提交消息。


我可以在该文件(# my comment)中发表评论吗?
borisdiakur 2014年

@Lego我怀疑(尚未直接测试过,但应该将文本文件的完整内容作为提交消息。)
VonC 2014年

我只是尝试了一下:我的评论被视为消息的一部分,因此似乎无法在文本文件中包含评论。无论如何,我喜欢在执行任务时在单独的doc-commit文件中记录更改的过程。那谢谢啦!
borisdiakur 2014年

8

我也是Git的新手。我遇到了与您基本相同的问题。我通过输入解决了这个问题:

git commit -a -m 'some message'

原因是git不允许没有消息的提交。您必须将一些消息与commit命令相关联。


5

我有这个问题。我刚才安装了1.8.0,发现必须稍作修改。我在这一切上都是非常新的,但从本质上讲,似乎在提交时,它将至少使用content.editor而不是core.editor,除非您为content.editor设置了某些东西。

所以,那是

git config --global content.editor "pico -w"

终于让我承诺!显然,当然,请使用您使用的任何编辑器。

希望有一天能对某人有所帮助!


5

git不允许在未指定消息的情况下提交。您是否在提交对话框中指定了提交消息?

请注意,以#开头的行被Git视为注释,而未被Git视为注释并忽略。


5

首先删除编辑器的旧条目:

git config --global --unset-all core.editor
git config  --unset-all core.editor

设置您的编辑器:

  • 对于记事本++

    git config --global core.editor "Notepad++ -w"
    git config core.editor "Notepad++ -w"
    
  • 对于崇高

    git config --global core.editor "Notepad++ -w"
    git config core.editor "subl -w"
    

4

我已经将我的原子编辑器配置为

git config --global core.editor "atom --wait"

但是当我做了

git commit

当atom已经启动时,它打开了一个新标签来添加注释,但是git并没有等待我保存文件并立即抛出“正在中止”消息。当我关闭atom并尝试再次提交时,git启动了atom并等待添加注释。


4

在Windows计算机上,“ Sublime”编辑器中,我们还可以在.gitconfig文件的以下文件夹[YOUR DRIVE LETTER]中添加以下行:/ users / username /

[core]
  editor = '[YOUR DRIVE LETTER]:/Program Files/Sublime Text [YOUR VERSION NUMBER]/sublime_text.exe' --wait

希望能帮助到你。


对我来说,这将创建一个名为的文件--wait。您是否有一个有效的示例,其中文件路径包含空格,如Program Files?谢谢。
zx81

2

它期望提交消息。

对于vim:(我也是新手。到目前为止,我只与vim合作)

命令后

git commit -v

您将被定向到名称为

“ .git / COMMIT_EDITMSG”

这会在您的编辑器中打开(在我的情况下是vim)

您会发现很多带注释的文本,它们看起来完全像您所做时看到的那样

git status  OR
git diff

如果您注意到了,您会在顶部看到一个空行-它期望提交消息。您可以在此处键入提交消息,然后保存并退出编辑器。完成!


完美!我知道会有一个简单的解决方案
Scott Stensland

2
git config --global core.editor "subl -w" -F 

经过大量的反复试验,这对我有所帮助,希望有人觉得它有用。

我已经符号链接了sublime 3用作subl命令。

我完全不知道为什么“”外的-F标志起作用。


1
我不需要-F标志;-w就足够了。-w告诉Sublime:“等待返回之前关闭文件”(来自subl --help)。
Galen Long

1

确保确定大写字母W。

git config --global core.editor“打开-a'Sublime Text 2'-W”

或使用以下命令替换无法正常运行的现有命令。

git config --replace-all core.editor“ open -a'Sublime Text 2'-W”


1

要在Notepad ++(Windows)上发表评论,请执行以下操作:

1.在某处创建一个批处理文件(例如c:\ Users \ me \ scripts \ npp.bat),将其
写入批处理文件中(取决于Notepad ++的安装位置):

"C:\Program Files\Notepad++\notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

2.保存批处理文件。
3.打开.gitconfig(通常在Windows用户文件夹中),并确保
[core]部分下具有:

editor = '"c:\\Users\\me\\scripts\\npp.bat"'

或运行:

git config --global core.editor '"c:\Users\me\scripts\npp.bat"'

4.现在执行某种提交,它将打开Notepad ++,git commit现在将等到notepad ++窗口关闭。


1

首先,请确保您的git已正确配置为打开某种编辑器提示(Visual Studio / Sublime / Notepad ++ / Atom等),以便继续进行。

  • 就我而言,我将git配置为在Ubuntu环境中使用Visual Studio。
  • 我尝试提交更改,但由于给定的失败而失败。
  • 然后我查看了我的.gitconfig文件,发现我的编辑器缺少-w参数
  • 我运行git config --global core.editor "code -w"命令并重新检查了我的.gitconfig文件,注意到-w正确地将文件添加到了那里。
  • 尝试再次提交更改,它对我有用。

希望这对像我这样的其他新手有所帮助。


0

我通过从打开新窗口的新奇MacVim编辑器切换到/ user / bin / vim中的标准默认vim来解决了该问题,该默认窗口在与调用shell所在的窗口相同的窗口中打开,并且似乎已经修复了问题。


1
您只需要添加-f标志,例如git config --global core.editor "mvim -f"
Ilias Karim

0

我遇到了这个问题,发现如果在提交后没有发表任何评论,它将给我该错误。如果我跳马上回到主bash,它不会提交,只是更清楚一点,我正在使用GIT Bash,而不是其他编辑器


0

当我使用完整的原子文件路径时,它不起作用,因此请使用:

git config --global core.editor "c:/programs/atom/atom.exe -w"

我用了:

git config --global core.editor "atom -w"

而且效果很好。祝好运!

重要说明:首先,请确保原子开始从您使用的命令行开始直接正确调用(原子)。


0

提交错误的解决方案

在此处输入图片说明

如上所示,在提交时需要输入一个提交字段,这基本上是用于版本控制和了解每次提交的更改。

如果您不输入密码,则会收到错误消息:由于提交信息为空,正在中止提交

注意:以上仅适用于Rstudio提交和提取文件。


0

我收到此错误,即使使用git config --global core.editor "code -w",它也不会等我关闭文件。它将立即终止。

我的问题是我早些时候运行过此命令git config core.editor "code"

似乎core.editor(我认为是本地工作目录规范)优先于--global core.editor

如果git config --global core.editor "code -w"(或您尝试使用的任何编辑器)都不适合您,请尝试省略--global

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.