为什么我收到“提交失败并出现错误:pathspec ...与任何文件都不匹配”?

问题描述 投票:61回答:18

我和Git有一些问题。

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

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

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

git git-commit
18个回答
41
投票

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

git commit <file>

<file>尚未上演;换句话说,Git还没有被告知。这很可能是这里发生的事情。跑

git add application/libraries/Funder.php

然后尝试提交。


2
投票

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

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

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


1
投票

我有同样的问题,“证书”这个词作为包名...当我将包重命名为“证书”时,它只是工作...奇怪..


0
投票

使用XCode 7.3,我将有问题的文件重命名为FooBar.foo.tmp,然后在XCode / git添加此新文件时提交,并将旧文件设置为删除。一旦我提交,然后我重命名它(在XCode内)。现在没关系。这就是生活。


0
投票

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


0
投票

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


0
投票

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


0
投票

我通过错误地在BitBucket上的不同仓库中创建分支来体验这一点,因此请确保您处于正确的仓库并且分支存在于那里。


0
投票

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

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

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

git commit -m "%commit_message%"

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

我把它改成了

git commit -m %commit_message%

这解决了我的问题。


0
投票

在我的情况下,麻烦的文件标有--skip-worktree。这可以很容易地检查

git ls-files -v . | grep ^S

52
投票

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

Windows的文件系统大多不区分大小写,因此您无法通过更改其大小写来重命名文件。相反,您必须在两者之间使用临时名称。

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

例:

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.

6
投票

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

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

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

然后通过Android Studio重新创建已删除的包,并将我的类复制并粘贴到那里。之后,我能够毫无问题地提交。


5
投票

以下是解决此问题的最快方法的简明答案。与@ cmbind55类似,但重点。

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

解:

  1. 取消添加旧文件名

git reset HEAD oldFileName.file

  1. 现在,添加新文件名

git add newFileName.file

  1. 承诺并且快乐

3
投票

由于重命名的目录,我有这个失败的提交方案。

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

application/Templates/lists/index.html

在IDE中,我同意将此文件添加到现有的git仓库中。在后来的测试中,我发现我对“模板”的大小写有一个区分大小写的路径问题。在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状态的引导)。

git add lists/templates/

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


3
投票

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


2
投票

我有类似的问题,但修复了它。我应该在Windows命令行中使用“”而不是''


2
投票

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


2
投票

iOS 9.2.1,Xcode 7.2.1,ARC启用

更改我的LaunchImage资产目录的“contents.json”文件时,请进入此状态。您可以选择使用提供的终端命令作为答案,但尝试这种更简单的方法......

源控制 - >刷新状态

enter image description here

希望这可以帮助。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.