goland 提交代码到自建 gitlab 必须使用带 api 和 write_repository 权限的 personal access token(pat),填入 settings → version control → gitlab 的 password 字段(非密码),host 填 https 地址,user 填用户名;需手动 git init、git remote add 初始化本地仓库,否则 push 失败。

GoLand 能直接提交代码到自建 GitLab,但必须绕过“账号登录弹窗陷阱”——它不认 GitLab 的网页登录态,只认 Personal Access Token(PAT),且必须带 api 和 write_repository 权限。
GitLab 侧必须生成带权限的 Personal Access Token
很多人卡在“点推送就弹登录框、输密码也不行”,本质是 GoLand 不走浏览器认证流,只接受 Token 认证。不配置 Token 或权限不足,后续所有操作都会失败。
- 登录 GitLab → 右上角头像 → Edit profile → 左侧菜单选 Access Tokens
- Token name 填
goland-push(便于识别) - Expiration date 建议设为 1 年,避免频繁重配
- Scopes 必须勾选:
api(读写项目元信息)、write_repository(推代码)——只勾read_repository会报403 Forbidden - 点击 Create personal access token 后,立即复制完整字符串(页面刷新后无法再查看)
GoLand 中添加 GitLab Account 时粘贴 Token 而非密码
GoLand 的 Settings → Version Control → GitLab 页面里,“Password”字段实际是 Token 输入框,不是密码。填错会导致 Authentication failed 或无限弹窗。
- Host URL 填自建 GitLab 地址,如
https://gitlab.example.com(注意必须是 HTTPS,HTTP 会被拒绝) - User 填你的 GitLab 用户名(不是邮箱),例如
alice - Password 字段粘贴刚才复制的完整 Token 字符串
- 点 Test:成功显示 “Connection successful” 才算通过;失败则检查 Token 权限、URL 拼写、是否被反向代理拦截
- 保存后,GoLand 会自动在后台用该 Token 调用 GitLab API 获取项目列表
首次推送前需手动初始化本地仓库并关联远程地址
GoLand 不会自动帮你 git init 或 git remote add,哪怕你已配置好 GitLab Account。跳过这步,右键“Git → Push”会提示 “No configured remote repository”。
- 确保项目根目录下已有
.git文件夹;没有就先在 Terminal 里执行:git init - 在 Terminal 中运行:
git remote add origin https://gitlab.example.com/namespace/project-name.git(URL 必须和 GitLab 项目页显示的一致) - 如果远程仓库非空(比如已有 README),需先
git pull --rebase origin main合并历史,否则 push 会被拒 - 之后在 GoLand 中右键项目 → Git → Commit Directory… → 写 message → Commit and Push,才会触发真实推送
常见错误:Push 后 GitLab 显示空仓库或 401
表面上推送成功,但 GitLab 页面看不到文件,或日志里出现 401 Unauthorized,大概率是 Token 生效范围或 Git URL 协议不匹配导致的。
-
401:Token 过期、权限不足、或 Git URL 用了 SSH(git@gitlab...)但 GoLand 只支持 HTTPS 认证方式 - 空仓库:推送时没选中任何 commit(Commit 窗口里没勾选文件),或分支名拼错(比如本地是
main,远程默认是master,未建立跟踪关系) - GitLab 日志显示
access denied or repository not exported:确认项目 visibility 是internal或public,private 项目需确保 Token 所属用户有访问权限 - HTTPS URL 被公司代理拦截:GoLand 的 Git 配置需额外设置 proxy,路径为
Settings → Version Control → Git → Proxy
最易被忽略的是:GitLab 自建实例若启用了双因素认证(2FA),Personal Access Token 是唯一可行路径;网页登录态、SSH key、甚至 Git 凭据管理器里的密码,GoLand 全部不认。Token 必须存在、权限必须全、URL 必须对——三者缺一不可。











