0 封面图

GoLand

1 Linux 系统

  1. 如果是私有仓库(GitLab),请先确保你能通过 git clone 命令克隆这个项目

  2. shell 输入命令 nano ~/.gitconfig ,确认 git 的用户名,密码,代理以及强制替换的 GitLab 地址:(Ctrl+x 离开、Y 写入、Enter 确认文件)

    [user]
    name = your name
    email = your email
    [core]
    autocrlf = input

    [http "https://github.com"]
    proxy = socks5://127.0.0.1:1089

    [url "git@gitlab.com:"]
    insteadOf = https://gitlab.com/
  3. 确保代理能成功使用

  4. Goland 里输入 Ctrl + Alt + S 进入设置页面,选择 Go -> Go Modules 或者鼠标点击 File | Settings | Go | Go Modules 。勾选 Enable Go modules integration ,在 Environment 中输入 GOPRIVATE=gitlab.com/yourCompanyName

  5. Goland 中选择 File | Settings | Appearance & Behavior | System Settings | HTTP Proxy ,选择 Manual proxy configuration ,根据你的代理填入相应规则,例如:

    Host name: 127.0.0.1
    Port number: 1089
    No proxy for: *.your-company.com,192.168.*

2 Windows 系统

  1. 如果是私有仓库(GitLab),请先确保你能通过 git clone 命令克隆这个项目

  2. 记事本打开 C:\Users\yourAccountName\.gitconfig ,确认 git 的用户名,密码,代理以及强制替换的 GitLab 地址:(Ctrl+x 离开、Y 写入、Enter 确认文件)

    [user]
    name = your name
    email = your email
    [core]
    autocrlf = input

    [http "https://github.com"]
    proxy = socks5://127.0.0.1:1089

    [url "git@gitlab.com:"]
    insteadOf = https://gitlab.com/
  3. 确保代理能成功使用

  4. Goland 里输入 Ctrl + Alt + S 进入设置页面,选择 Go -> Go Modules 或者鼠标点击 File | Settings | Go | Go Modules 。勾选 Enable Go modules integration ,在 Environment 中输入 GOPRIVATE=gitlab.com/yourCompanyName

  5. Goland 中选择 File | Settings | Appearance & Behavior | System Settings | HTTP Proxy ,选择 Manual proxy configuration ,根据你的代理填入相应规则,例如:

    Host name: 127.0.0.1
    Port number: 1089
    No proxy for: *.your-company.com,192.168.*

3 P.S.

  1. 无法使用 git clone 的请自行添加公钥至 GitLab
  2. 本文里 yourCompanyName 等字眼的地方自行替换
  3. 特设 GitHub 网址走代理的原因是,项目中可能引入了 GitHub 的包,走代理避免 import timeout
  4. 特设 GitLab 网址为 git@gitlab.com 是为了引入 GitLab 私有项目的包
  5. 特设 GOPRIVATE=gitlab.com/yourCompanyName 是因为 go 命令会从公共镜像 goproxy.io 上下载依赖包,并且会对下载的软件包和代码库进行安全校验,而环境变量 GOPRIVATE 用来控制 go 命令把哪些仓库看做是私有的仓库,这样的话,就可以跳过 proxy server 和校验检查,这个变量的值支持用逗号分隔,可以填写多个值。注:GONOPROXY=none 会覆盖以往的设置。

4 参考资料

[1] GOPRIVATE 环境变量 https://goproxy.io/zh/docs/GOPRIVATE-env.html