You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git pull报错Server does not allow request for unadvertised object如何解决

问题根本原因

Server does not allow request for unadvertised object报错与本地仓库损坏、Git Bug无关,核心触发逻辑如下:

  • 上游原始仓库的vmscl子模块当前绑定的提交哈希8cc8573b39c9efde42a77701b91b3b6dcbb6b7ac,在你本地配置的vmscl子模块远端仓库中不存在:通常是子模块远端被强制推送覆盖了历史提交,或者该提交仅存在于原始仓库关联的私有子模块克隆地址中
  • Server refused to set environment variables是SSH服务端关闭了PermitUserEnvironment配置,属于服务端常规限制,不影响代码拉取逻辑,可直接忽略
可行解决方案

方案一:重置对齐上游最新状态(适用于无本地未提交修改的场景)

你未对子模块做自定义修改,直接对齐上游原始仓库的最新状态即可解决问题:

  1. 添加上游原始仓库为本地远端(未添加时执行)
git remote add upstream ssh://site/original.git
  1. 拉取上游最新代码并强制对齐本地主分支

注意:该操作会丢弃你本地主分支的所有未提交修改,请提前备份需要保留的内容

git fetch upstream
git reset --hard upstream/master
  1. 强制同步子模块到当前父仓库绑定的版本
git submodule update --init --force --remote vmscl
  1. 如仍报错,删除本地子模块缓存后重新初始化
rm -rf vmscl .git/modules/vmscl
git submodule sync vmscl
git submodule update --init --recursive vmscl

方案二:保留当前父仓库提交(适用于不能对齐上游最新的场景)

如果不需要重置父仓库版本,可临时修改子模块远端地址拉取缺失提交:

  1. 临时将子模块远端切换为原始仓库对应的子模块地址
git config submodule.vmscl.url ssh://site/vmscl
  1. 拉取子模块全量历史后执行更新
cd vmscl
git fetch --all
cd ..
git submodule update
  1. 操作完成后可将子模块远端地址改回原有配置

内容的提问来源于stack exchange,提问作者Alexander Dyagilev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:30:00