go mod tidy拉取私有仓库报unknown revision v0.0.4 已打对应标签排查无果
排查解决思路
- 校验tag的有效性与对应提交内容
首先登录GitHub进入github.com/myorg/myrepo的v0.0.4版本页面,确认该版本根目录存在go.mod文件,且module声明为github.com/myorg/myrepo。也可以在本地克隆的myrepo目录执行git show v0.0.4:go.mod,如果报错说明tag对应的提交不存在go.mod,需要重新打tag到正确的提交上。
另外确认v0.0.4是附注tag而非轻量tag:go mod对轻量tag的兼容性较差,可在myrepo仓库执行以下命令重新打附注tag并推送:git tag -a v0.0.4 -m "release v0.0.4" git push origin v0.0.4 --force - 清空本地模块缓存重试
本地go模块缓存可能残留旧的无效版本信息,执行以下命令清空缓存后重新拉取:go clean -modcache cd /path/to/myrepo2 go mod tidy - 确认git SSH代替规则生效
执行git config --global --list确认存在以下配置,保证go拉取私有仓库时走SSH协议而非HTTPS:
如果没有该配置,执行以下命令添加:url."ssh://git@github.com/".insteadOf = https://github.com/git config --global url."ssh://git@github.com/".insteadOf "https://github.com/" - 验证仓库权限与tag拉取能力
在任意目录执行以下命令,确认你的SSH账号有权限拉取myrepo仓库并获取对应tag:
如果以上任意一步报错,说明你的账号对该仓库的权限不足,需要联系组织管理员开通对应权限。git clone git@github.com:myorg/myrepo.git test-myrepo cd test-myrepo git fetch --tags git checkout v0.0.4 - 强制直连拉取查看详细日志
执行以下命令跳过代理直连GitHub拉取依赖,查看详细日志定位问题:cd /path/to/myrepo2 GOPROXY=direct GOSUMDB=off go get -v github.com/myorg/myrepo@v0.0.4 - 确认GOPRIVATE配置正确
执行go env GOPRIVATE确认输出包含github.com/myorg/*,如果没有执行以下命令配置:go env -w GOPRIVATE=github.com/myorg/*
内容的提问来源于stack exchange,提问作者j-diaz
相关产品推荐
相关产品推荐

