Git 服务器不允许请求未经广告的对象
我知道以前有人问过这个问题,但我找到了所有的答案,只是给我一个问题的快速解决方案,或者一个令人困惑的解释,解释为什么会发生,以及它是如何实际解决的 这就是我遇到这个错误的原因。我的一个队友在回购协议中推动了子模块的变更。从主Git 服务器不允许请求未经广告的对象,git,github,git-submodules,Git,Github,Git Submodules,我知道以前有人问过这个问题,但我找到了所有的答案,只是给我一个问题的快速解决方案,或者一个令人困惑的解释,解释为什么会发生,以及它是如何实际解决的 这就是我遇到这个错误的原因。我的一个队友在回购协议中推动了子模块的变更。从主git status提取后,在子模块中显示了新的提交: modified:path/to/submodule/submodule\u name(新提交) 所以我决定通过运行 git子模块更新路径/to/submodule/submodule\u name-- 在这一点上,我得
git status
提取后,在子模块中显示了新的提交:
modified:path/to/submodule/submodule\u name(新提交)
所以我决定通过运行
git子模块更新路径/to/submodule/submodule\u name
--
在这一点上,我得到了错误
Fetched in submodule path 'path/to/submodule/submodule_name', but it did not contain ... Direct fetching of that commit failed
在谷歌搜索之后,我发现了我的问题的不同答案:
超级用户是让我更接近理解问题的链接,github刚刚给了我运行命令来修复它--git子模块sync
现在,我仍然有点困惑,在我的
git状态中是如何显示更改的
,但是当我尝试更新服务器时,却没有意识到提交。“git子模块同步”做了什么使提交可用?您的错误消息确实提到:
dit did not contain ... Direct fetching of that commit failed
这是在子模块原始克隆存储库中完成的典型提交。。。未被推回远程回购。但子模块回购的新状态记录在父回购中,父回购被推送 这意味着: 父repo引用从未推送到子模块远程URL的子模块repo的提交:克隆的更新将:
- 更新子模块引用
- 尝试使用该引用更新子模块内容,但失败
您的队友确实推动了父repo更改(特别是子模块的新状态),但没有推动在该子模块内完成的提交。看起来您需要递归同步子模块。试试这个:
git submodule sync --recursive