忽略没有读取权限的git子模块

时间:2017-12-08 17:29:14

标签: git gitignore atlassian-sourcetree

情况:

我有一个包含子模块的存储库。

普通人(像我一样)没有这个子模块的读取权限,这不是一个真正的问题,因为它不需要运行项目。

我的问题是每次我检查出来时都会收到错误,告诉我子模块更新失败,因为无法读取子模块远程:

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已更改,并在结帐时再次给我原始版本。

我的问题:

如何抑制这些错误并完全忽略本地子模块的存在...包括尝试重新引入它的所有进一步远程更改?

注意:请假设解决方案必须保持最终状态,并且不需要在远程端进行任何更改......因为它们不会发生(已经尝试与repo管理员交谈)

1 个答案:

答案 0 :(得分:2)

复制这种情况有点困难,但根据评论中的讨论

git submodule deinit -f .

帮助。如果有人偶然发现,从docume ntation可能会发现在初始化期间,实际git pull在子模块上完成。因此,如果您没有访问远程子模块存储库的权限,本地git没有主分支,没有提交结帐,这就是错误消息背后的含义。

更新:如果您使用的是像SourceTree或SmartGit这样的gui,请检查存储库设置并禁用子模块的自动更新。
根据您的设置,仅禁用"初始化新子模块"可能已经解决了这个问题:

enter image description here