服务器不允许请求未公布的对象
Server does not allow request for unadvertised object
我知道以前有人问过这个问题,但我找到了所有答案,只是给我一个快速解决问题的方法,或者对为什么会发生以及如何实际解决的令人困惑的解释。
这就是我遇到此错误的原因。我的一位队友在我们的回购协议中推动了对子模块的更改。从 master 拉取后 git status
在我们的子模块中显示了新的提交:
modified: path/to/submodule/submodule_name (new commits)
所以我决定通过 运行
更新子模块
git submodule update path/to/submodule/submodule_name
-- here is the doc for this command
此时我得到了错误
Fetched in submodule path 'path/to/submodule/submodule_name', but it did not contain ... Direct fetching of that commit failed
谷歌搜索后,我发现了我的问题的不同答案:
超级用户 link 让我更接近于理解这个问题,github 只是交给我 运行 修复它的命令 -- git submodule sync
现在,我仍然对更改如何出现在我的 git status
中感到困惑,但是当我尝试更新服务器时并不知道该提交。 git submodule sync
如何使该提交可用?
您的错误消息确实提到:
dit did not contain ... Direct fetching of that commit failed
这是典型的在子模块原始克隆存储库中完成的提交...没有推回其远程存储库。
但是子模块仓库的新状态记录在父仓库中,被推送。
这意味着:
父仓库引用子模块仓库的提交,该提交从未被推送到远程子模块URL:来自克隆的更新将:
- 更新子模块引用
- 尝试使用该引用更新子模块内容但失败。
您的队友确实推送了父回购更改(特别是子模块的新状态)但没有推送在该子模块内完成的提交。
看来您需要递归同步子模块。试试这个:
git submodule sync --recursive
我知道以前有人问过这个问题,但我找到了所有答案,只是给我一个快速解决问题的方法,或者对为什么会发生以及如何实际解决的令人困惑的解释。
这就是我遇到此错误的原因。我的一位队友在我们的回购协议中推动了对子模块的更改。从 master 拉取后 git status
在我们的子模块中显示了新的提交:
modified: path/to/submodule/submodule_name (new commits)
所以我决定通过 运行
更新子模块git submodule update path/to/submodule/submodule_name
-- here is the doc for this command
此时我得到了错误
Fetched in submodule path 'path/to/submodule/submodule_name', but it did not contain ... Direct fetching of that commit failed
谷歌搜索后,我发现了我的问题的不同答案:
超级用户 link 让我更接近于理解这个问题,github 只是交给我 运行 修复它的命令 -- git submodule sync
现在,我仍然对更改如何出现在我的 git status
中感到困惑,但是当我尝试更新服务器时并不知道该提交。 git submodule sync
如何使该提交可用?
您的错误消息确实提到:
dit did not contain ... Direct fetching of that commit failed
这是典型的在子模块原始克隆存储库中完成的提交...没有推回其远程存储库。
但是子模块仓库的新状态记录在父仓库中,被推送。
这意味着:
父仓库引用子模块仓库的提交,该提交从未被推送到远程子模块URL:来自克隆的更新将:
- 更新子模块引用
- 尝试使用该引用更新子模块内容但失败。
您的队友确实推送了父回购更改(特别是子模块的新状态)但没有推送在该子模块内完成的提交。
看来您需要递归同步子模块。试试这个:
git submodule sync --recursive