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