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

时间:2015-01-28 10:28:24

标签: git git-commit

我在与Git有一些问题。

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

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

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

20 个答案:

答案 0 :(得分: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.

答案 1 :(得分:40)

这是您尝试运行时出现的错误

git commit <file>

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

git add application/libraries/Funder.php

然后尝试提交。

答案 2 :(得分:6)

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

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

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

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

答案 3 :(得分:5)

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

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

<强>解决方案:

  1. 取消添加旧文件名
  2. git reset HEAD oldFileName.file

    1. 现在,添加新文件名
    2. git add newFileName.file

      1. 承诺并且快乐

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

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

application/Templates/lists/index.html

在IDE中,我同意将此文件添加到现有的git repo中。 在后来的测试中,我发现我的&#34;模板&#34;的大小写有一个区分大小写的路径问题。在IDE中,我只是将目录重命名为&#34; templates&#34; (改为小写)。我没有记录围绕此事件的实际事件顺序,但是稍后当我的提交失败并显示以下消息时,我有一个预感,这就是这个问题。显然,IDE没有完全处理重命名目录的情况。

IDE提交错误消息:

  

提交失败,错误:pathspec   &#34;应用/模板/列表/ index.html中&#34;与任何文件都不匹配   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/

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

答案 6 :(得分:2)

我有类似的问题,但修复了它。我应该一直在使用&#34;&#34;而不是&#39;&#39;在Windows命令行

答案 7 :(得分:2)

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

答案 8 :(得分:2)

iOS 9.2.1,Xcode 7.2.1,已启用ARC

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

来源控制 - &gt;刷新状态

enter image description here

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

答案 9 :(得分:2)

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

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

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

答案 10 :(得分:1)

我和#34;证书&#34;这个词有同样的问题。作为包名...当我将包重命名为&#34;证书&#34;它只是工作...奇怪..

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

我遇到了同样的错误。我在命令行参数中传递了提交消息。我传递的提交消息带有双引号。

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

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

git commit -m "%commit_message%"

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

我将其更改为

git commit -m %commit_message%

这解决了我的问题。

答案 17 :(得分:0)

就我而言,麻烦的文件标有--skip-worktree。可以使用

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

答案 18 :(得分:0)

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

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

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

答案 19 :(得分:0)

render() {
   return <div className="break-line">Complete tasks faster than ever before. \n With our platform, it only takes minutes</div>
}

如果您使用的是Windows操作系统,请尝试使用双引号