在 .gitmodules 中找不到子模块路径“Pods”的 url

Adh*_*aya 2 git xcode git-submodules ios

我已将 Xcode 项目添加到 git 存储库中。当我运行以下命令时:

$ git submodule init
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

fatal: No url found for submodule path 'Pods' in .gitmodules
Run Code Online (Sandbox Code Playgroud)

我没有添加“Pods”子模块,它是自己添加的吗?

Von*_*onC 14

不确定为什么 Pods 列在您的.gitmodules. 这篇文章提到

当存储库使用从另一个存储库克隆的文件但没有对其创建的源存储库的映射引用时,就会发生这种情况。

需要将映射添加到.gitmodules位于您正在使用的存储库根目录中的文件中。

但就您而言,请编辑该.gitmodules文件并删除该Pods条目。

Pods并检查索引中是否有任何条目:

git rm --cached -- Pods
Run Code Online (Sandbox Code Playgroud)

这将删除gitlink ,这是一个在索引中记录为特殊条目的SHA1 。 这足以删除子模块的痕迹。


这个答案(以其原始形式)可以被解释为“无用且误导许多人”,因为:

  • 缺乏解释
  • 假设 Pod 不应该是子模块:
  • 潜在的不良后果

我可以将上述答案改写为:

虽然如果您没有将“Pods”目录添加为子模块,则在文件中看到“Pods”目录是不常见的.gitmodules,但在某些情况下可能会发生这种情况。在继续解决方案之前,让我们先了解一下这里发生了什么。

当存储库使用从另一个存储库克隆的文件但没有到为其创建的源存储库的映射引用时,通常会发生此错误。需要将映射添加到.gitmodules位于您正在使用的存储库根目录中的文件中。

在这种情况下,您的文件中似乎有一个“Pods”条目.gitmodules,并且您的 Git 存储库正在寻找相应的 URL 来获取子模块内容,但找不到。这可能是由于手动添加或开发环境中的某些工具添加了它。

在采取任何操作之前,请确保“Pods”目录不是子模块。例如,如果您使用 CocoaPods,一些开发人员更喜欢将“ Pods”目录保留在源代码管理中,而另一些开发人员则不喜欢这样做。如果您确定“Pods”不应该是子模块,那么您可以继续执行以下步骤。

首先,编辑.gitmodules文件并删除“Pods”条目。这将阻止 Git 尝试查找“Pods”子模块的 URL。

然后,通过运行以下命令检查索引中是否有任何“Pods”条目:

git rm --cached -- Pods
Run Code Online (Sandbox Code Playgroud)

此命令删除“Pods”的 gitlink(索引中的特殊条目),它本质上是对子模块中提交的引用。

请注意这些行为有潜在的后果。如果“Pods”是一个子模块,这些步骤可能会导致您的项目出现问题。在执行这些操作之前,请务必确保对项目进行备份或确保将更改推送到远程存储库。