goland识别私有仓库前必须显式配置goprivate,否则go get或gopls会发请求至公共代理导致403或卡在“fetching…”;需用go env -w设置并同步到ide环境,且确保git层认证通畅。

GoLand 识别私有仓库前必须设对 GOPRIVATE
GoLand 不会自动猜你哪些域名是私有的,GOPRIVATE 必须显式配置,否则 go get 或后台 gopls 仍会把请求发给公共代理(比如 goproxy.cn),结果就是 403、module lookup failed 或卡在 “Fetching…” 状态。
常见错误现象:
- 终端能
git clone git@git.internal.com/team/repo成功,但 GoLand 里 import 标红、无法跳转 -
go mod download报GET https://goproxy.cn/xxx/@v/v1.2.3.info: 403 Forbidden - 右键项目 → “Sync dependencies” 没反应,底部状态栏无 “Loading modules…” 提示
实操建议:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 运行
go env -w GOPRIVATE=git.internal.com(替换成你的真实 Git 域名) - 支持通配符:如公司用多个子域,写成
go env -w GOPRIVATE="*.internal.com,gitlab.myorg.net"(逗号分隔,**不能有空格**) - 在 GoLand 的
Settings → Go → Tools → Environment中也加一行GOPRIVATE=git.internal.com,避免 IDE 启动的子进程读不到 shell 环境 - 验证是否生效:在 GoLand 内置 Terminal 执行
go env GOPRIVATE,输出必须是你设的值
SSH 私库必须确保 git 能通,HTTPS 私库要提前配凭据
Go 工具链调用 git 下载私有模块时,不走 IDE 的 HTTP 代理或认证逻辑,而是直接复用系统级 git 配置。所以即使 GOPRIVATE 设对了,git 层不通照样失败。
实操建议:
- SSH 私库:在 GoLand 内置 Terminal 运行
ssh -T git@git.internal.com,看到Welcome to GitLab类提示才算通;若报权限拒绝,检查~/.ssh/id_rsa.pub是否已添加到 Git 服务器 - HTTPS 私库:先在终端执行一次
git clone https://git.internal.com/team/repo,按提示输账号密码或 token,Git 会缓存凭据;Windows 用户注意凭据管理器是否启用Git Credential Manager - 别指望 GoLand 的 “HTTP Proxy” 设置能帮上忙——它只影响 IDE 自身网络请求,不影响
go命令调用的git
replace 本地路径必须相对且目标含 go.mod
开发阶段想把主模块依赖指向本地代码(比如调试 ../utils),replace 是唯一可靠方式。但路径写错会导致 go build 成功而 IDE 标红、补全失效,甚至 go mod tidy 直接忽略该条目。
实操建议:
- 路径必须是相对于当前
go.mod文件的相对路径,例如主模块在./service,则写replace github.com/yourname/utils => ../utils -
../utils目录下必须存在有效的go.mod(哪怕只有module github.com/yourname/utils一行),否则 Go 会 fallback 到 legacy 模式,IDE 无法索引 - 绝对路径、
~/、C:\开头的路径全部无效,replace不解析用户主目录或盘符 - 修改后立刻执行
go mod tidy,再在 GoLand 中右键项目根目录 → “Synchronize”,否则 IDE 缓存不会更新
代理和 GOSUMDB 必须配对,否则 checksum mismatch 难排查
国内访问 sum.golang.org 极不稳定,但若只关 GOSUMDB 不配国内校验源,CI 或他人拉代码时仍会失败;若只换 GOPROXY 却没关校验,又会因 sum server 不可达导致 checksum mismatch。
实操建议:
- 优先使用国内校验源:
go env -w GOSUMDB=sum.golang.google.cn(比GOSUMDB=off更安全) - 若临时调试,可
go env -w GOSUMDB=off,但务必在提交前恢复,且不能用于 CI 环境 -
GOPROXY和GOPRIVATE必须同时生效:比如GOPROXY=https://goproxy.cn,direct+GOPRIVATE=git.internal.com,缺一不可 - 最容易被忽略的是 GoLand 内置 Terminal 的环境变量——它不继承你 shell 的
go env设置,所有go env -w命令都得在它里面再跑一遍










