Xcode - 错误:路径规范“...”与git已知的任何文件不匹配

75

我正在使用本地的git仓库。当我尝试提交对核心数据模型文件(.xcdatamodel)的更改时,会出现以下信息:

error: pathspec '.../DataModel.xcdatamodeld/DataModel.xcdatamodel/contents' did not match any file(s) known to git.
如何修复此问题并像处理其他文件一样提交模型?

你不需要采取任何特殊步骤来处理 Core Data 模型的 git。它们甚至不是二进制文件,因此可以像任何源文件一样提交、跟踪和差异化。那个文件实际上存在吗?之前已经添加到仓库了吗? - Tom Harrington
该文件存在,并且旁边有"M"指示符表示已修改。 - Abdalrahman Shatou
我有同样的问题(虽然不仅限于xcdatamodel文件)。这是最热门的搜索结果,但并没有提供太多帮助。我希望能在其他地方找到答案。 - Matthew James Briggs
@MatthewBriggs 你找到了吗? - Abdalrahman Shatou
@AbdalrahmanShatou,不幸的是,我无法记住我是如何解决这个问题的,而且我也没有找到关于这个问题的具体问答。目前我最好的猜测是,我可能是通过命令行提交来解决的。我的情况有点不同,因为我正在使用Github,我认为我实际上是通过Github进行了推送/拉取往返来解决这个问题的。 - Matthew James Briggs
这个回答解决了你的问题吗?如何在Git中提交仅区分大小写的文件名更改? - TylerH
15个回答

146

问题确实存在,就是更改文件名大小写的问题。对我来说,这是因为我的Macbook/OSX。显然,Windows也有同样的“东西”。

原因:git不能识别从“filename”更改为“FileName”的变化。

以下是针对遇到此问题的任何人的解决方案列表。所有解决方案都应在项目根目录下运行:

永久修复当前和未来项目的方法

更改git大小写设置。之后应提交该文件。

git config core.ignorecase false --global

该项目仅限修复

git config core.ignorecase false

“仅给我一行代码,让我可以继续”修复方法-感谢Bruce

git commit -a -m "pathspec did not match any file(s) known to git fix"

按小时计费的解决方案(I get paid by the hour)

Delete the file. Commit. Push. Add the file again. Commit. Push.

根据您的需求,您可能希望恢复设置。请执行以下操作:

git config core.ignorecase true 

2
Git 在文件名大小写方面的限制是导致此错误消息的一种方式,但在我的情况下,Xcode 的提交列表中有两个额外的文件,从命令行提交解决了这个问题。我不认为你说的所有遇到此错误的人都有同样的问题。 - Ed Norris
谢谢,这个帮我省了不少烦恼! - Chris

24

我只需关闭XCODE然后重新打开,就解决了这个问题。 我知道这不是一个很酷的解决方法,但没有对我自己的任何文件进行更改。


被接受的答案对我来说只起作用了一次。之后有任何修改吗?没有。这个似乎是最好的解决方案。我同意,这不是一个很酷的解决方案。也许下周(WWDC 2020)会更好地解决这个问题。 - user7014451
运行得很好!谢谢! - jamryu

13

我在使用 Xcode 9.1 的时候遇到了同样的错误。 我通过在终端中手动提交来解决它。 步骤如下:

  1. 进入你的项目文件夹/目录
  2. $ git status - 你将知道对你的项目进行的更改
  3. $ git add .
  4. $ git commit -m"你的消息"
  5. $ git push origin master

一旦你成功地从终端手动提交了所有更改,那么你就可以在 Xcode 中使用源代码控制。


10

这不是解决问题的正确方式,但这是一个权宜之计,可能会帮助其他人...在终端中执行以下操作:

git commit -m "<message>" <project dir>

将 <your message> 替换为您的信息,将 <directory of your project> 替换为您项目的目录。


10

9

在重命名故事板文件后,我遇到了同样的问题。以下步骤对我有用:

  1. 清理(Shift + Command + K)
  2. 构建(Command + B)
  3. 提交

不确定,但我认为可能是git仍然持有旧文件名的引用,清理构建文件夹并重新构建可以纠正该问题。


它对我有效。 - Jignesh Chanchiya
这对我有用。显然,我删除了一些文件。但是如果我们必须清理项目才能提交最新的版本,那就太糟糕了。 - chitgoks

9
这类似于tf.alves的回答,但通常我会执行以下操作:
git commit -a -m "comment"

我发现如果忘记使用-a和-m参数,就会出现“pathspec message mentioned above”错误。


在添加“-a”选项后,我收到了“致命错误:带有-a的路径没有意义”的提示。 - vic

8

我在Xcode中遇到了这个错误,只需要重新启动Xcode然后再提交就好了。


7

我这样修复:

  1. 使用终端(console)进入你的项目目录
  2. 执行命令: git status //这会显示未跟踪的文件
  3. 使用命令添加所有未跟踪的文件: git add -A
  4. 你可以使用xcode源代码控制进行提交,然后推送。

4
我删除了.xcdatamodel文件,提交了更改,然后重新添加并再次提交。虽然不是很规范,但是可以解决问题。

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