我尝试从私人gitlab服务器,从Mac获取存储库。
我将 git config (~/.gitconfig( 设置为使用 ssh 而不是 https:
[url "git@gitlab.mysite.com:"]
insteadOf = https://gitlab.mysite.com/
当我使用 https url 克隆项目时,我得到了正确的替换
$ git clone https://gitlab.mysite.com/group/project
$ cd project
$ git remote -v
origin git@gitlab.mysite.com:group/project (fetch)
origin git@gitlab.mysite.com:group/project (push)
但是,当我使用 go get 时,它会尝试使用 https 网址,但失败了
$ go get gitlab.mysite.com/group/project
package gitlab.mysite.com/group/project: unrecognized import path "gitlab.mysite.com/group/project" (https fetch: Get https://gitlab.mysite.com/group/project?go-get=1: x509: certificate signed by unknown authority)
为什么 go get 不使用我的 git 配置?我该如何解决这个问题?
我知道这个问题类似于这个问题:go get:Git设置被忽略以及许多其他关于私有存储库的问题
我的问题不同
该错误发生在git clone
调用之前。 当您调用go get
时,它会对 URL 进行 HTTPS 调用以检查标头并查看它是否提供go get
重定向。 这就是失败的原因。
它失败了,因为服务器提供的证书不是由您在本地系统上指定为受信任的证书颁发机构签名的。 这可能是因为您的内部 gitlab 使用的是未签名的证书,因为用于对其进行签名的 CA 尚未添加到您的本地系统中,或者因为您的工作场所使用的是中间人风格的代理,而您没有添加该代理的CA。 您可以尝试修复证书问题,也可以直接运行:
go get -insecure gitlab.mysite.com/group/project
-insecure 标志允许从存储库中获取并解析 使用不安全方案(如 HTTP(的自定义域。请谨慎使用。
值得注意的是,这会绕过用于签署服务器证书的 CA 的验证。