情况:
我有一个包含子模块的代码库。
像我这样的普通人没有此子模块的读取权限,这并不是问题,因为该子模块对于项目运行并不是必须的。
我的问题是,每次我检出代码时,都会报错告诉我子模块更新失败,因为无法读取子模块远程信息:
fatal: Needed a single revision
Unable to find current revision in submodule path
没有惊喜...
我尝试手动从.gitmodules中删除它,然后使用
git update-index --assume-unchanged .gitmodules
但是这只有在下一次检出时才有效,因为子模块似乎得到了特殊处理。
我试过将 .gitmodules 放到 .gitignore 或 .git/info/exclude 中,但是 git 忽略了这些内容,报告 .gitmodules 已更改,并在检出时再次给出原始的 .gitmodules。
我的问题是:如何抑制这些错误并完全忽略本地的子模块存在... 即包括所有试图重新引入它的远程更改?
请注意:请假设解决方案必须留在我的端上,并且不需要对远程端进行任何更改... 因为他们不会发生(已经尝试与 repo 管理员交谈)。
git submodule deinit -f .
,然后再进行拉取会发生什么?您能否在本地机器上复制此操作(更改所有者并删除对子模块存储库的访问权限)? - JustMegit submodule deinit -f .
成功将其从配置中删除,并对现在缺失的子模块路径使用 assume unchanged 似乎可以解决问题(还将子模块路径和 .gitmodules 添加到了 .git/info/exclude 中)...这似乎有效(至少在 Linux 上),我可以在几个小时内测试它是否也可以解决 Windows 上的问题。 - Fabian N.