【问题标题】:Why am I getting "Commit failed with error: pathspec ... did not match any file(s)"?为什么我收到“提交失败并出现错误:pathspec ...不匹配任何文件”?
【发布时间】:2015-03-27 05:06:36
【问题描述】:

我在使用 Git 时遇到了一些问题。

我有一个存储库,可以毫无问题地提交任何文件。但是,有一个文件“Funder.php”,当我尝试提交时,它告诉我有一个错误:

Commit failed with error:
pathspec 'application/libraries/Funder.php' did not match any file(s) known to git.

我对此很陌生,所以想知道是否有人可以帮忙?

【问题讨论】:

  • 文件application/libraries/Funder.php是否存在?您使用的是什么操作系统?
  • 尝试在你的存储库中运行git status,看看你是否能找到任何线索来说明这种情况的发生方式。

标签: git git-commit


【解决方案1】:

这个错误发生的原因在这篇文章中指出:https://stackoverflow.com/a/29485441/2769415

Windows 的文件系统大多不区分大小写,因此不能重命名 只需更改其大小写即可创建文件。相反,您将不得不 在两者之间使用一个临时名称。

解决方案: 将文件重命名为原始文件,然后将其重命名为不同的名称,然后返回到具有正确大小写的文件。 Git 不会再抛出这个错误了。

例子:

Created FOOBar class.
Renamed it to FooBar and then got the error.
Rename it back to FOOBar.
Rename to FooBarTest.
Rename to FooBar.
Git works now.

【讨论】:

  • 在尝试上述解决方案但失败后,此方法有效。
  • 算作 git 的 bug 吗?
  • @ZhangMeng - 这更多的是用户错误而不是错误,但可能是用户体验功能。请参阅my concise answer 指出问题以及如何在没有此随机重命名游戏的情况下快速解决
  • 如果我不记得它的旧名称怎么办?
【解决方案2】:

这是您尝试运行时遇到的错误

git commit <file>

但是&lt;file&gt;还没有上演;换句话说,Git 还没有被告知。这很可能是这里发生的事情。运行

git add application/libraries/Funder.php

然后尝试提交。

【讨论】:

    【解决方案3】:

    重命名一些活动后,我在 Android Studio 中遇到了同样的问题。我尝试添加 (git add) 和移动 (git mv) 文件但没有帮助,而且我一次又一次地收到相同的消息。

    最后,我决定将包中包含问题文件的类备份到我的硬盘中的单独文件夹中,然后我从原始文件夹中删除了这些文件,并在终端中删除了这些文件:

    rm app/src/main/java/com/path/to/package/with/problematic/files/
    

    然后通过 Android Studio 重新创建已删除的包,并将我的课程复制并粘贴回那里。之后我就可以毫无问题地提交了。

    【讨论】:

    • 对于一个文件来说,这是一个非常激烈的解决方案。
    • 我面临同样的问题。我能为整个项目做些什么?
    【解决方案4】:

    以下是解决此问题的最快方法的简明答案。类似于@cmbind55 的帖子,但切中要害。

    问题:我添加了一个后来重命名的文件。

    解决方案:

    1. 取消添加旧文件名

    git reset HEAD oldFileName.file

    1. 现在,添加新文件名

    git add newFileName.file

    1. 承诺并快乐

    【讨论】:

    • 我在我的项目结构中添加了一个像 Dir 这样的目录,它没有提交给 git,现在如果尝试将它重命名为 dir,它会抛出上述错误!
    • @MuhammadBabar 听起来你可能已经对 Dir 下的文件做了git add。 Git 不会跟踪空目录,因此您可能在 Dir 中有一些 git 正在跟踪的内容。你的输出说明了什么?
    • 朱利安你说得对,我确实复制了 Dir 中的一些文件和文件夹,但我删除了它们而不是提交!这意味着我的工作目录没有任何要提交的更改,因为我已经删除了文件和文件夹! P.S:我是 git 的新手 :)
    • 最奇怪的是,Android Studio 没有显示任何要在 LocalChanges 选项卡中提交的文件和文件夹!但是在 git shell 上,如果我运行git status,我仍然可以看到很多没有暂存的文件和很多要提交的文件(已删除的文件和文件夹)!
    • 我绝对建议在使用工具之前先在命令行学习 git。很高兴你想通了
    【解决方案5】:

    如果从终端工作,请确保您的命令中有消息标志。

    git commit "Your Commit Message" //Throws an error: pathspec '3.

    git commit -m "Your Commit Message" //No error thrown

    【讨论】:

    • 这解决了我的问题。
    【解决方案6】:

    由于重命名的目录,我遇到了这种提交失败的情况。

    这是最初创建的目录,大小写错误:

    application/Templates/lists/index.html
    

    在 IDE 中,我已同意将此文件添加到现有的 git 存储库中。 在后来的测试中,我发现“模板”的大小写存在区分大小写的路径问题。在 IDE 中,我只是将目录重命名为“模板”(更改为小写)。我没有记录这方面的实际事件顺序,但后来当我的提交失败并显示以下消息时,我有预感这就是这个问题。显然,IDE 并没有完全处理这种重命名目录的情况。

    IDE 提交错误信息:

    提交失败并出现错误:pathspec “application/templates/lists/index.html” 不匹配任何文件 git 知道。

    在阅读了一些内容后,我的策略是将文件取出,然后再次添加。我取消了可疑文件

    git reset HEAD lists/Templates/lists/index.html
    

    注意,git status 在这里只显示目录...不是文件。

    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
        lists/templates/
    

    然后,我用更正后的目录名称添加回来(我只使用添加的路径,遵循 git status 的引导)。

    git add lists/templates/
    

    在此之后,我的提交成功了。我不确定这是否是理想的技术,但它解决了我的提交错误。

    【讨论】:

      【解决方案7】:

      我有同样的问题。只需将'初始注释单引号''更改为双引号“”

      【讨论】:

        【解决方案8】:

        我遇到了类似的问题,但已解决。我应该在 windows 命令行中使用 "" 而不是 ''

        【讨论】:

          【解决方案9】:

          我遇到了同样的问题。这里的答案都没有帮助我解决问题。卡了两天后,我提请注意整个文件名和路径很长。我做了重构,将其重命名为不那么复杂的东西,并重新排列文件夹以减少完整的文件名长度,它奏效了!

          【讨论】:

          • 哇,这也是给我的。当然,在 Windows 上运行,路径存在长名称问题。
          【解决方案10】:

          iOS 9.2.1、Xcode 7.2.1、ARC 已启用

          在为我的 LaunchImage 资产目录更改“contents.json”文件时遇到了这个问题。您可以选择使用提供的终端命令作为答案,但请尝试这种更简单的方法...

          源代码管理 -> 刷新状态

          希望这会有所帮助。干杯!

          【讨论】:

          • 很遗憾没有帮助。
          • @MJQZ1347 嘿,您能补充一下您要准确解决的条件吗?
          • @DeyaEldeen 太棒了!很高兴能提供帮助。
          【解决方案11】:

          我对“证书”一词作为包名有同样的问题......当我将包重命名为“证书”时,它就可以工作......奇怪......

          【讨论】:

            【解决方案12】:

            在 XCode 7.3 中,我将相关文件重命名为 FooBar.foo.tmp,然后在 XCode/git 添加此新文件并将旧文件设置为删除后提交。一旦我提交,然后我将它重命名(在 XCode 中)。现在好了。这就是生活。

            【讨论】:

              【解决方案13】:

              我的问题是我正在复制/粘贴整个提交行,并且它有特殊字符,在控制台中似乎是普通字符(例如:智能引号而不是普通引号)。一旦我将它们粘贴到纯文本编辑器中,我就会看到它们,更正它们,然后它就起作用了。

              【讨论】:

                【解决方案14】:

                我对“.entitlements”文件有同样的问题,删除现有文件并再次添加它对我有用。

                【讨论】:

                  【解决方案15】:

                  我在 Mac 中使用 SourceTree 提交已删除文件时遇到了类似的问题。 其中一个有问题的文件有口音(áéíóú...)。为了解决它,我不得不使用终端而不是 SourceTree

                  【讨论】:

                    【解决方案16】:

                    我在 BitBucket 上的不同存储库中错误地创建了分支,因此请确保您在正确的存储库中并且该分支存在于那里。

                    【讨论】:

                      【解决方案17】:

                      我遇到了同样的错误。我将提交消息作为命令行参数的一部分传递。我用双引号传递的提交消息。

                      在 git commit 中,我再次使用了双引号。这引发了同样的错误。

                      所以我在调用 git commit 时从提交消息中删除了双引号。这解决了我的问题。

                      git commit -m "%commit_message%"
                      

                      上面的命令抛出了同样的错误

                      我已经改成

                      git commit -m %commit_message%
                      

                      这解决了我的问题。

                      【讨论】:

                        【解决方案18】:

                        在我的例子中,麻烦的文件被标记为--skip-worktree。这可以通过

                        轻松检查
                        git ls-files -v . | grep ^S
                        

                        【讨论】:

                          【解决方案19】:

                          我的问题是一个以~$ 开头的临时单词备份文件,文件名是~$?????.docx。

                          我不确定发生了什么 - 我的 word 文档是由 GIT 使用 Pycharm 获取的,所以我想我在使用 GIT 时正在编辑。

                          我必须创建一个同名的临时文件,提交然后删除该文件。

                          【讨论】:

                            【解决方案20】:
                            Try using double quotes for "Initial project version"
                            

                            如果您在 Windows 操作系统上工作,请尝试使用双引号

                            【讨论】:

                              猜你喜欢
                              • 2012-11-29
                              • 2020-06-17
                              • 1970-01-01
                              • 1970-01-01
                              • 2014-02-05
                              • 2019-07-09
                              • 2019-03-18
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多