對於公司的私有Gitlab倉庫,沒有對https支持,在使用最新版本的go get命令時,需要使用-insecure參數來支持http,但如果導入的包里邊依賴了需要https的倉庫,就不好使了,折騰了一下,解決方案如下:
一、為Gitlab添加SSH Keys
1.生成 ssh keys
ssh-keygen -t rsa -C "myname@mycompany.com"
2.查看內容
cat ~/.ssh/id_rsa.pub
3.復制到剪貼板
Windows
clip < ~/.ssh/id_rsa.pub
Mac
pbcopy < ~/.ssh/id_rsa.pub
Linux (requires xclip)
xclip -sel clip < ~/.ssh/id_rsa.pub
4.粘貼到Gitlab個人中心的SSH Keys Settings
二、配置.gitconfig文件
Windows
notepad C:\Users\{你的Windows用戶名}\.gitconfig
Linux/Mac
vi ~/.gitconfig
寫入
[url "git@git.mygitlab.com:"] insteadOf = https://git.mygitlab.com
這里簡化一下可以直接使用命令
git config --global url."git@git.mygitlab.com:".insteadOf "https://git.mygitlab.com"
三、驗證
go get git.mygitlab.com/myname/xxx.git
然后到go的src目錄就可以看到新增了git.mygitlab.com/myname/目錄了,當然源碼也在這個目錄下
考慮到https可是以后的趨勢,所以還是推動一下公司盡快用上https的私有倉庫吧。
四、補充
補充一下可能遇到的問題:
1、提示信息:package git.mygitlab/myname/gopublic.git: no buildable Go source files in d:\gosrc\src\git.mygitlab.com\myname\gopublic.git
出現這個提示其實表示你的文件已經下載成功了
2、這種方法拉回來的包是不會下載包內的依賴的,需要自己補充。原因見上提示信息。
3、在使用時要注意需要修改目錄名,如
d:\gosrc\src\git.mygitlab.com\myname\gopublic.git
import時應該是這樣
import "git.mygitlab.com/myname/gopublic.git/redis"
但實際因為代碼里邊引用的包路徑是
import "gopublic/redis"
導致在go build時會報錯,找不到包,所以要將
d:\gosrc\src\git.mygitlab.com\myname\gopublic.git
移動到
d:\gosrc\src\gopublic
以上是使用上要注意的地方