go111module=on 是硬性前提,否则 go mod 无效且私有模块配置失效;goprivate 必须精确匹配路径前缀(如 github.com/my-org/*);github 私有仓库认证依赖 git 层的 .netrc 或凭据助手,go 不读 .netrc。

GO111MODULE=on 是硬性前提,不是可选项
不设这个,go mod 命令根本不会生效,go get 仍走老式 GOPATH 路径,私有模块配置全失效。Go 1.13+ 默认开启模块模式,但旧环境或 CI 脚本常覆盖为 auto 或空值。
检查方式:go env GO111MODULE 输出必须是 on。如果输出 auto,大概率当前目录在 $GOPATH/src 下——直接移出该路径再试,别依赖 auto 切换。
实操建议:
- 运行
go env -w GO111MODULE=on永久启用(推荐) - CI 中务必在
go mod前显式设置,避免被环境变量覆盖 - Docker 构建时用
ENV GO111MODULE=on,不能只靠ARG
GOPRIVATE 必须精确匹配 GitHub 私有仓库路径前缀
GOPRIVATE 不是域名白名单,而是路径前缀通配器。写错一个字符、漏掉 /*、多一个空格,私有模块就会被代理拦截或校验失败。
常见错误现象:
-
go mod download卡在git ls-remote - 报
unknown revision或404 Not Found - 明明设了
GOPRIVATE=github.com/my-org,但模块路径是github.com/my-org/internal-lib,仍走公网代理
正确写法示例:
Conventional Commits v1.0.0 分支、工作树命名及提交信息规范,适用于 GitHub 与 GitLab 项目,用于创建分支和命名工作树等场景。
go env -w GOPRIVATE="github.com/my-org/*,github.com/another-team/**"
注意:* 只匹配一级子路径(如 my-org/repo),** 匹配任意深度(如 my-org/team/repo);逗号后绝对不能有空格;Windows PowerShell 用户用 $env:GOPRIVATE=""。
GitHub 私有仓库认证只能靠 git 层,Go 不读 .netrc
Go 工具链本身不解析 .netrc,它调用系统 git 命令拉取代码。而 git 在 HTTPS 场景下才查 .netrc,所以路径、权限、格式三者缺一不可。
实操要点:
-
.netrc路径只能是$HOME/.netrc(Linux/macOS)或%USERPROFILE%/_netrc(Windows) - 权限必须为
600:chmod 600 ~/.netrc,否则git直接忽略 - 内容不能有注释、空行,
machine值必须和go.mod中模块路径的域名完全一致(如模块是github.com/my-org/lib,就写machine github.com) -
password字段填 GitHub 的 Personal Access Token(勾选read:packages和read:repository),不是登录密码
HTTPS URL 重写或凭据助手比嵌入 token 更安全可靠
有人把 token 直接写进 go.mod 或 URL(如 https://token:x-oauth-basic@github.com/my-org/repo),这会导致泄露风险,且 go mod vendor 后仍需运行时认证。
更稳妥的做法:
- 用
git config --global credential.helper store(开发机),首次git clone时输入 token,后续自动复用 - 对 GitHub,推荐用
git config --global credential.helper 'cache --timeout=3600'避免明文存本地 - 若用 SSH,模块路径必须以
git@github.com:开头,且ssh -T git@github.com和git ls-remote git@github.com:my-org/repo.git都得成功 - 混用协议会失败:如果
go.mod写的是https://github.com/my-org/repo,即使~/.ssh/config配了也无效
复杂点在于,GOPRIVATE 只告诉 Go “别走代理”,真正认证成败全看 git 是否能连上 —— 这个边界容易被忽略,排查时应先单独验证 git clone 是否成功,再动 Go 命令。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










