git ls-remote执行成功但go get报错仓库未找到,如何解决?
解决go get访问多层路径私有仓库的问题
核心问题分析
Go在解析模块路径时错误地将internal.net/dir1/dir2识别为仓库根路径,而非实际的internal.net/dir1/dir2/dir3/repo,导致请求错误的URLhttps://internal.net/dir1/dir2.git/。
可行解决方案
配置Git路径映射,强制Go使用正确的仓库地址:
执行以下命令,让Git将模块路径映射到实际仓库URL:git config --global url."https://internal.net/dir1/dir2/dir3/repo.git".insteadOf "https://internal.net/dir1/dir2/dir3/repo"此配置会让Go在拉取
internal.net/dir1/dir2/dir3/repo模块时,自动替换为正确的仓库地址,避免路径截断。手动指定Git仓库地址拉取:
直接在go get命令中通过--git-url参数指定实际仓库地址,跳过Go自动路径解析:go get -v internal.net/dir1/dir2/dir3/repo@master --git-url=https://internal.net/dir1/dir2/dir3/repo.git补充GONOSUMDB配置(可选,避免私有模块校验问题):
虽然已设置GOPRIVATE,但配合GONOSUMDB可防止Go尝试访问公共sum数据库校验私有模块:go env -w GONOSUMDB=internal.net确认仓库模块声明:
确保目标仓库的go.mod文件中,模块路径声明为:module internal.net/dir1/dir2/dir3/repo错误的模块路径会导致Go解析混乱。
内容的提问来源于stack exchange,提问作者Ganapathy Ramachandran
相关产品推荐
相关产品推荐

