路径中的.gitmodules文件没有子模块映射,且缺少.gitmodules文件。

70
当我运行git submodule init命令时,出现以下错误:

在路径“xxx”中未找到任何.gitmodules文件映射

我搜索了.gitmodules文件,但无论如何都找不到。
我已经阅读了this关于同一主题的最受欢迎的SO问题。但不幸的是,我无法解决这个问题。特别是因为我不再拥有.gitmodules文件。
根据我的GitHub私有存储库,我仍然有子模块。只是我找不到.gitmodules文件。

4
值得注意的是,如果在现有仓库中使用git init创建一个新的仓库(即“子模块”的定义),可能会意外地创建一个子模块。如果这样做,.gitmodule文件将不会被创建。 - tandy
3个回答

162
  1. 确保在 .git/config 中没有任何 submodule 部分。如果有,请将其删除。
  2. 执行 git rm --cached <path_to_submodule>

13
仅执行上述步骤2对我来说已经足够了; git rm --cached <path_to_submodule>。 - christosc
1
在第二步之后,不要忘记git commit - Stanislav Iegorov
2
调用 git rm --cached 会出现 fatal: Please, stage your changes to .gitmodules or stash them to proceed 错误提示。 - Quolonel Questions
1
@QuolonelQuestions 我也遇到了这个问题.. git add .gitmodules 会将文件暂存,然后 git rm --cached <submodule_path> 对我有用。 - Neek
这对我也起作用了。我当时正在进行 rebase 操作,但仍然可以使用这个答案。 - Wayne F. Kaskie

5

我昨天也遇到了同样的问题,当我手动删除了.gitmodules中的条目时(例如nano .gitmodules),我不得不使用以下命令:

git rm --cached <pathtomodule> 

返回了一条消息

rm '<pathtomodule>'

那么我需要一个


git commit -m "delete cached modules"

并验证了子模块的删除。

3

除了以上内容,我还需要移除.gitmodules文件。


在我的情况下,我并没有删除整个文件,而是删除了现在无效的条目,然后事情又开始正常工作了。谢谢! - KidIcarus271

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