为什么会出现“提交失败,错误为:路径规范...与任何文件不匹配”?

68

我在使用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 是否存在?您使用的是哪个操作系统? - Cyclonecode
2
尝试在您的代码库中运行 git status 命令,看看是否能找到任何关于发生这种情况的线索。 - Cyclonecode
20个回答

54

这个错误发生的原因在这篇帖子中得到了解释:https://dev59.com/yF0b5IYBdhLWcg3wMuxw#29485441

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.

4
在尝试并失败了上述解决方案后,这个方法起作用了。 - fahmy
4
这算是 Git 中的一个 bug 吗? - Meng Zhang
@张萌 - 这更像是用户错误而不是漏洞,但也许是用户体验的问题。请参见我的简明答案,指出了问题所在以及如何快速解决,避免这种随机重命名的游戏。 - julian soro
1
如果我不记得它的旧名称怎么办? - Jemshit Iskenderov

45

当您尝试运行时,会出现这个错误。

git commit <file>

但是<file>还没有被暂存,换句话说,Git还不知道它的存在。这很可能就是此处出现的问题。运行以下命令:

但是 <file> 没有被暂存;换句话说,Git 还不知道它的存在。这很可能是此处的情况。运行:

git add application/libraries/Funder.php

然后尝试提交。


7

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

最后,我决定将包中有问题文件的类备份到我的硬盘驱动器上的单独文件夹中,然后从原始文件夹中删除文件,在终端中执行以下操作:

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

然后我通过Android Studio重新创建了被删除的包,将我的类复制并粘贴回去。之后我就可以提交而不会遇到任何问题。


1
这对于仅有一个文件来说是一个相当激烈的解决方案。 - SMBiggs
我也遇到了同样的问题。对于整个项目,我该怎么办? - Viks

6
以下是快速解决此问题的简明答案。与@cmbind55的帖子类似,但更加简洁明了。
问题:我添加了一个文件,后来将其重命名。
解决方案:
1. 取消添加旧文件名
git reset HEAD oldFileName.file 2. 现在,添加新文件名
git add newFileName.file 3. 提交并愉快地完成。

我在项目结构中添加了一个类似于Dir的目录,但没有提交到Git。现在如果尝试将其重命名为dir,则会抛出上述错误! - Muhammad Babar
@MuhammadBabar 听起来你可能已经对 Dir 下的文件执行了 git add 操作。Git 不会跟踪空目录,所以你可能在 Dir 内有一些 Git 正在跟踪的内容。你的输出信息是什么? - julian soro
朱利安,你说得对,我确实复制了一些文件和文件夹到目录中,但我删除了它们而不是提交!这意味着我的工作目录没有任何需要提交的更改,因为我已经删除了这些文件和文件夹!附注:我是Git的新手 :) - Muhammad Babar
最奇怪的是,Android Studio 在“本地更改”选项卡中不显示任何要提交的文件和文件夹!但是在 Git Shell 中,如果我运行 git status 命令,我仍然可以看到很多未暂存的文件以及需要提交的文件(已删除的文件和文件夹)! - Muhammad Babar
2
我强烈建议在使用工具之前先学习命令行中的git。很高兴你解决了这个问题。 - julian soro

4

如果你从终端工作,请确保在你的命令中有一个信息标志。

git commit "你的提交信息" //会抛出一个错误: pathspec '3.

git commit -m "你的提交信息" //不会抛出错误


这解决了我的问题。 - StarLord

3
我曾经遇到过同样的问题。只需要将“Initial comment single quotes ''”改为双引号“""”即可解决。

3

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

这是最初创建的目录,因为大小写错误而导致问题:

application/Templates/lists/index.html

在IDE中,我同意将此文件添加到现有的git存储库中。在后续测试中,我发现了一个大小写敏感的路径问题,即“Templates”的大小写。在IDE中,我只需将目录重命名为“templates”(更改为小写)。我没有记录这个事件的实际顺序,但稍后当我的提交失败并显示以下消息时,我有一种预感这是这个问题。显然,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/

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


2

我有同样的问题。这里的任何答案都没有帮助我解决问题。在卡了两天之后,我注意到整个文件名和路径都非常长。我进行了重构,将其重命名为更简单的名称并重新排列文件夹以减少完整文件名长度,然后问题得到了解决!


1
哇,这对我也是一样的情况。当然是在Windows上运行,路径会有长名称的问题。 - Ezekiel Kruglick

2

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


2

iOS 9.2.1,Xcode 7.2.1启用ARC

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

源代码控制 -> 刷新状态

enter image description here

希望对您有所帮助。干杯!


很遗憾,没有帮上忙。 - MJQZ1347
@MJQZ1347 你好,能否请您详细说明一下您要解决的具体条件? - serge-k
@DeyaEldeen 太好了!很高兴能帮忙。 - serge-k

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