git - 在没有读取权限的情况下忽略 git 子模块

标签 git gitignore atlassian-sourcetree

情况:

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

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

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

fatal: Needed a single revision
Unable to find current revision in submodule path 

毫不奇怪......

我试图从 .gitmodules 中手动删除它,然后使用

git update-index --assume-unchanged .gitmodules

但这只在下一次 checkout 之前有效,因为子模块似乎得到特殊对待。

我的问题:

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


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

最佳答案

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

git submodule deinit -f .

有帮助。如果有人在这里绊倒,来自docume ntation人们可能会发现在初始化期间,实际的 git pull 是在子模块上完成的。因此,如果您没有访问远程子模块存储库的权限,则本地 git 没有 master 分支,也没有要 check out 的提交,这就是错误消息背后的含义。


更新:如果您使用的是 SourceTree 或 SmartGit 之类的图形用户界面,请检查存储库设置并禁用子模块的自动更新。
根据您的设置,仅禁用“初始化新子模块”可能已经解决了问题:

enter image description here

关于git - 在没有读取权限的情况下忽略 git 子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719399/

相关文章:

git - 如何解决与 Git 的冲突?

git - 什么是签名提交?

git - 如何以不被跟踪的方式将文件存储在 GIT 中?

git - 使用 sourcetree 恢复推送到远程

git - 为什么在 SourceTree 中禁用 GnuPG 签名复选框?

node.js - Electron 伪造:据说缺少git和node的依赖项,但都出现在package.json中

git - 如何在一台计算机上拥有 2 个 git 用户?

尽管 gitignore 文件,Git 有选择地忽略

git - "assume-unchanged"信息是否提交?

Git(源树): gitignore already tracked files without deleting from online repository