服务器不允许请求未通告的对象

Nic*_*tti 4 git github git-submodules

我知道以前有人问过这个问题,但我找到了所有答案,只是给我一个快速解决问题的方法,或者对它为什么会发生以及它是如何实际解决的一个令人困惑的解释。

这就是我遇到此错误的方式。我的一个队友在我们的 repo 中推动了对子模块的更改。从 master 拉取后git status,我们的子模块中显示了新的提交:

modified: path/to/submodule/submodule_name (new commits)

所以我决定通过运行来更新子模块

git submodule update path/to/submodule/submodule_name--这里是这个命令的文档

在这一点上我得到了错误

Fetched in submodule path 'path/to/submodule/submodule_name', but it did not contain ... Direct fetching of that commit failed
Run Code Online (Sandbox Code Playgroud)

谷歌搜索后,我发现了我的问题的不同答案:

  1. github
  2. 超级用户
  3. 堆栈溢出

超级用户是让我更接近理解问题的链接,而 github 只是给了我运行命令来修复它—— git submodule sync

现在,git status当我尝试更新服务器时,我仍然对更改如何显示在我的但不知道提交中感到有些困惑。怎么git submodule sync做才能使该提交可用?

Von*_*onC 6

您的错误消息确实提到:

dit did not contain ... Direct fetching of that commit failed
Run Code Online (Sandbox Code Playgroud)

这是在子模块原始克隆存储库中完成的典型提交......而不是推回其远程存储库。
但是子模块 repo 的新状态记录在父 repo 中,被推送。

意思是:

父存储库引用从未推送到子模块远程 URL 的子模块存储库的提交:来自克隆的更新将:

  • 更新子模块参考
  • 尝试使用该引用更新子模块内容但失败。

您的队友确实推送了父 repo 更改(特别是子模块的新状态),但没有推送在该子模块中完成的提交。