【问题标题】:Aborting commit due to empty commit message由于空提交消息而中止提交
【发布时间】:2021-08-31 01:47:23
【问题描述】:

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

git commit -a -v

我在我的编辑器中输入了一条提交消息,我关闭了文件,并得到了这个错误:

Aborting commit due to empty commit message.

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

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

一个可能的解决方法是:

git commit -am "SomeComment"

但是这样做我觉得我有点否定了使用 git 的目的。我想正确记录我的更改。

【问题讨论】:

  • 你使用的是哪个版本的 git for windows?
  • 这里唯一无效的事情是没有输入相关的提交消息。 git commit -am "SomeRelevantComment"
  • 当您尝试从编辑器保存文件时遇到什么错误?
  • 我在 Windows 7 上遇到了这个问题,同时处理了 `C:\Program Files` 下的文件。 Windows 7 可以防止在此目录(以及其下的任何位置)中写入,并且由于在 .git 目录中创建了用于写入提交消息的临时文件(COMMIT_MSG 或其他文件),因此失败了。
  • “文档”?嗯……

标签: git


【解决方案1】:

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

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

【讨论】:

  • 崇高文本 2 上的相同点。尝试了很多其他的东西,这是第一个起作用的。谢谢扎克。
  • 对于 macvim,使用 mvim -f 而不是 -w 标志。
  • 当您使用现有的 gedit 实例设置提交消息时,似乎有时会出现错误,因此 "gedit -w" 对我不起作用,但 "gedit -s""gedit --standalone" 有效。
  • -w 到底是做什么的?
  • 使用“code -w”似乎使它在带有 Microsoft 代码编辑器的 Windows 10 上为我工作。
【解决方案2】:

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

#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 将该行视为注释,因此将提交消息视为空,因为它除了 cmets 什么都没有!

解决方法是用# 以外的字符开始我的提交消息。

在我的具体情况下,将 Pivotal ID 括在方括号中使 git 和 Pivotal 都很高兴:

[#122143980] My commit message here. 

【讨论】:

  • GitLab 具有相同的问题语法,我习惯于在我的提交消息前加上问题标识符,这是一个问题,问题编号的括号也适用于 GitLab。
  • 嗯,太好了,你成功了!这让我很兴奋,但我看到我确实已经开始提交 GitHub 问题号 #xxxx Fixed: ... 并将其更改为 Fixed #xxxx: ... 确实修复了它。谢谢。
  • 我使用 #123 some message 引用了一个 github 问题。在提交期间工作,但后来在通过编辑器提交 rebase 时失败。
  • 你是救生员,谢谢!
  • 我在尝试挑选以 # 开头的单个提交时遇到了这个问题。在樱桃采摘之前修改提交消息并强制推送提交修复了问题。
【解决方案3】:

对于 Visual Studio 代码

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

对于原子

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

为了崇高

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

【讨论】:

  • 可能想检查前两种方法之间的区别
  • 你如何回到原来的设置?或者您如何读取当前设置?
【解决方案4】:

如果您想提交正确的(长的、多行注释)文档,但不想要 -m 选项,您可以做的(以及我在准备 my commits 时所做的)是:

  • 将您的文档(在您进行更改时)写入一个单独的文件“doc-commit”(或您想调用的任何名称)
  • 使用“git commit -a -F /path/to/doc-commit”提交)

简而言之,使用一个单独的文件(可以是任何你想要的路径)作为你的提交信息。

【讨论】:

  • 我可以在那个文件中创建 cmets (# my comment) 吗?
  • @Lego 我怀疑是这样(尚未直接对其进行测试,但它应该将您的文本文件的全部内容作为提交消息。
  • 我刚试了一下:我的cmets被当作消息的一部分,所以似乎不可能在文本文件中有cmets。无论如何,我喜欢在处理任务时在单独的 doc-commit 文件中记录更改的过程。所以 - 谢谢!
【解决方案5】:

我也是 Git 的新手。我遇到的问题和你基本一样。我通过输入解决了这个问题:

git commit -a -m 'some message'

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

【讨论】:

    【解决方案6】:

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

    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"
      

    【讨论】:

      【解决方案7】:

      我遇到了这个问题。之前刚装了1.8.0,发现上面要稍微修改一下。我对这一切都很陌生,但基本上看起来,在提交时,它会使用 content.editor,而不是 core.editor,至少如果你为 content.editor 设置了一些东西的话。

      原来如此

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

      终于让我答应了! 显然,当然,使用您使用的任何编辑器。

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

      【讨论】:

      • 你知道-w 代表什么吗?
      【解决方案8】:

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

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

      【讨论】:

        【解决方案9】:

        我已将我的 atom 编辑器配置为

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

        但是当我这样做的时候

        git commit
        

        当 atom 已经启动时,它打开了一个用于添加 cmets 的新选项卡,但 git 并没有等我保存文件并立即抛出“Aborting”消息。当我关闭 atom 并尝试再次提交时,git 启动 atom 并等待添加 cmets。

        【讨论】:

          【解决方案10】:

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

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

          希望对你有帮助。

          【讨论】:

          • 对我来说,这会创建一个名为 --wait 的文件。您是否有一个工作示例,其中文件的路径包含空格,例如Program Files?谢谢。
          【解决方案11】:
          git config --global core.editor "subl -w" -F 
          

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

          我已经将 sublime 3 符号链接为 subl 命令。

          我完全不知道为什么“”之外的 -F 标志有效。

          【讨论】:

          • 我不需要 -F 标志; -w 就足够了。 -w 告诉 Sublime “等待文件关闭后再返回”(来自subl --help)。
          【解决方案12】:

          它需要一个提交消息。

          对于vim:(我也是新手,目前只使用过vim)

          在你的命令之后,

          git commit -v
          

          您将被定向到名为

          的文件

          ".git/COMMIT_EDITMSG"

          在你的编辑器中打开(在我的例子中是 vim)

          您会发现很多评论文本与您看到的内容一模一样

          git status  OR
          git diff
          

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

          【讨论】:

          • 完美!!!我知道会有一个简单的解决方案
          【解决方案13】:

          首先,请确保您的 git 已正确配置为打开某种编辑器提示符(visual studio / sublime / notepad++ / atom 等)以便继续进行。

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

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

          【讨论】:

            【解决方案14】:

            确保一定要大写W。

            git config --global core.editor "open -a 'Sublime Text 2' -W"

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

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

            【讨论】:

              【解决方案15】:

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

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

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

              2. 保存批处理文件。
              3. 打开 .gitconfig(通常位于您的 Windows 用户文件夹中)并确保
              [核心] 部分:

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

              或者运行:

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

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

              【讨论】:

                【解决方案16】:

                我在 atom 上遇到了同样的问题,但我使用记事本解决了这个问题,而是使用以下命令更改了 git 的核心编辑器

                git config --global core.editor "C:\\Windows\\notepad.exe"
                

                【讨论】:

                  【解决方案17】:

                  我通过从打开一个新窗口的花哨的 MacVim 编辑器切换到 /user/bin/vim 中的标准默认 vim 来解决问题,该 vim 在与调用它的 shell 相同的窗口中打开,这似乎解决了这个问题。

                  【讨论】:

                  • 您只需要添加 -f 标志,例如git config --global core.editor "mvim -f"
                  【解决方案18】:

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

                  【讨论】:

                    【解决方案19】:

                    当我使用完整的 atom 文件路径时,它不起作用,所以不要使用:

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

                    我用过:

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

                    它工作得很好。祝你好运!

                    重要提示:首先确保 atom 开始正确地从您正在使用的命令行直接调用它 (atom)。

                    【讨论】:

                      【解决方案20】:

                      提交错误的解决方案

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

                      如果你不输入这个你会得到错误:Aborting commit due to empty commit message

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

                      【讨论】:

                        【解决方案21】:

                        我收到了这个错误,即使我使用了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

                        【讨论】:

                          【解决方案22】:

                          您的问题的原因是您的编辑器在您输入提交之前已关闭。我遇到了同样的问题。所以告诉你的编辑等待是你问题的答案。

                          为此,您需要在 GIT 中更改 core.editor 的全局变量。

                          在更改之前,您可能想看看现有的是什么。 然后使用下面的代码将它们视为一个列表。

                          git config --global --list
                          

                          我的,在 core.editor 没有等待之前。

                          core.editor=gedit
                          

                          因此,我使用以下两个代码更改了该变量。第一行用于取消设置变量,第二行用于正确声明它。

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

                          这样,我的问题就解决了,希望你也是。如果您使用

                          检查全局变量
                          git config --global --list
                          

                          同样,你会看到你的 core.editor 也发生了变化,如下所示。

                          core.editor=gedit -w
                          

                          它现在显示您的“等待”功能正在工作。

                          【讨论】:

                            【解决方案23】:

                            我刚刚遇到这个错误并刚刚解决它,所以我想分享我的场景和答案。

                            我运行了命令 git config --global core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

                            然后当我执行git commit 时,它会打开记事本++,但在我提供提交消息并按“ctrl+s”保存后,它会在命令提示符中显示此消息 ->“由于提交为空而中止提交信息。” (如下图所示)

                            我通过提供如下提交消息解决了这个问题(我们需要在 Commit TITLEcommit Description 之间提供 2 个空行,如下所示)

                            注意:以“#”开头的行是git自动生成的。

                            【讨论】:

                              【解决方案24】:

                              在浪费了一个小时让它在我的 Ubuntu 上运行之后,我决定使用 Sublime Text 而不是 Atom 来编写我的提交消息。 所以而不是:

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

                              我对 Sublime 使用了相同的命令。

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

                              而且效果很好。 Sublime 暂停等待提交消息。

                              【讨论】:

                                【解决方案25】:

                                其他人建议的-w 对我不起作用,但--wait 对我有用。

                                完整输入为git config --global core.editor 'code --wait'

                                code 是 VS Code,替换为 subl 用于 Sublime 等)

                                由于参数的全名很明显,这会将提交消息的编辑器设置为打开 (code) 并告诉它到 wait,直到文件保存并关闭。 p>

                                关闭前不要忘记保存文件。

                                【讨论】:

                                  猜你喜欢
                                  • 2019-02-03
                                  • 1970-01-01
                                  • 2022-10-15
                                  • 1970-01-01
                                  • 2020-11-15
                                  • 1970-01-01
                                  • 2011-09-07
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多