Why am I getting "Commit failed with error: pathspec ... did not match any file(s)"?

Why am I getting "Commit failed with error: pathspec ... did not match any file(s)"?

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

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

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

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

这是您尝试 运行

时遇到的错误
git commit <file>

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

git add application/libraries/Funder.php

然后尝试提交。

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

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

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

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

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

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

application/Templates/lists/index.html

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

IDE 提交错误信息:

Commit failed with error: pathspec "application/templates/lists/index.html" did not match any file(s) known to 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/

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

出现这个错误的原因在这个post中指出:

Windows’ file system is mostly case-insensitive, so you cannot rename a file by just changing its capitalization. Instead, you will have to use a temporary name in between.

解决方法: 将文件重命名回原始文件,然后将其重命名为不同的名称,然后再重命名为大小写正确的文件。 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.

这是解决此问题的最快方法的简明答案。类似于 @cmbind55 post 但切中要点。

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

解法:

  1. 取消添加旧文件名

git reset HEAD oldFileName.file

  1. 现在,添加新文件名

git add newFileName.file

  1. 投入并快乐

我遇到了类似的问题,但已解决。我应该在 windows 命令行

中使用 "" 而不是 ''

我遇到了同样的问题。 None 这里的答案没有帮助我解决问题。卡了两天,提请注意,整个文件名连路径都很长。我进行了重构,将其重命名为不那么复杂的名称,并重新排列文件夹以减少完整文件名的长度,并且成功了!

我对 "certificate" 这个词作为包名称有同样的问题...当我将包重命名为 "certificates" 时它就可以工作...奇怪..

iOS 9.2.1,Xcode 7.2.1,启用 ARC

在为我的 LaunchImage 资产目录更改 "contents.json" 文件时将

运行 添加到此文件中。您可以选择使用提供的终端命令作为答案,但请尝试这种更简单的方法...

源代码管理 -> 刷新状态

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

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

我有同样的问题。只需将 'Initial comment single quotes '' 更改为双引号 ""

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

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

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

我曾在 BitBucket 上错误地在不同的存储库中创建分支,因此遇到过这种情况,因此请确保您在正确的存储库中并且该分支存在于那里。

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

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

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

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

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

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

git commit -m "%commit_message%"

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

我改成了

git commit -m %commit_message%

这解决了我的问题。

在我的例子中,麻烦的文件被标记为 --skip-worktree。这可以很容易地用

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

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

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

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

Try using double quotes for "Initial project version"

尝试使用双引号,如果你正在 Windows OS