根本原因是go工具链不复用网页登录会话且默认不传凭据,必须同时配置goprivate=git.company.com和git config --global url."git@git.company.com:".insteadof "https://git.company.com/",并确保go.mod中模块路径为ssh格式、ssh -t验证通过。

GoLand 里拉不到自建 GitLab 包,本质是 Go 工具链没走对路
不是 Goland 有问题,而是 Go 的模块拉取机制默认不认你网页登录的 GitLab 账号,也不自动用浏览器会话。它只靠 Git 协议本身——要么 HTTPS + PAT,要么 SSH。自建 GitLab 通常禁密码、强制 token 或 SSH,而 Go 默认啥都不传,就卡在 authentication required 或直接报错 exit status 128。
必须同时配 GOPRIVATE 和 Git URL 重写
只设 GOPROXY 不行,Go 会试图把私有域名也扔给代理,结果 403;只设 GOPRIVATE 也不行,Git 还是走 HTTPS 协议,没凭据照样失败。
使用 `gh` CLI 与 GitHub 交互。通过`gh issue`、`gh pr`、`gh run` 和 `gh api` 管理 issue、PR、CI 运行以及高级查询。
-
go env -w GOPRIVATE=git.company.com(替换成你 GitLab 域名,多个用逗号分隔,不能有空格) -
git config --global url."git@git.company.com:".insteadOf "https://git.company.com/"(确保所有https://git.company.com/xxx自动转成git@git.company.com:xxx) - 检查
go.mod里模块路径是否已是 SSH 格式:module git.company.com/group/project,而不是https://git.company.com/group/project
SSH 路径验证和 Goland 同步要点
Goland 本身不执行 go mod tidy,它只是读取结果。如果命令行能拉,IDE 报红,大概率是缓存或模块识别没刷新。
- 先在终端跑:
ssh -T git@git.company.com,看到Hi username! You've successfully authenticated才算通 - 在 Goland 中,右键项目 → Go Modules → Sync projects(或按
Alt+Enter在报红处触发) - 如果 Sync 灰掉,进
File → Settings → Go → Go Modules,确认Enable Go Modules integration已勾选 - 删掉
.idea目录重开项目,有时索引损坏会导致持续报红
别碰 go.mod 里硬写 token,也别信“全局凭据缓存”万能
HTTPS 方式下有人试过 git config --global credential.helper store 再手动 clone 一次带 token 的 URL,但这种方式依赖本地凭据文件明文存 token,且 Goland 启动方式(比如桌面图标启动)可能不继承 shell 的凭据环境,导致时灵时不灵。SSH 是唯一稳定路径,只要密钥没换、没被 GitLab 后台禁用,就不会因 2FA 或 token 过期中断。










