go get:Git设置被忽略
我试着从一个私有的gitlab服务器,从mac上获取一个存储库 我将git配置(~/.gitconfig)设置为使用ssh而不是https:go get:Git设置被忽略,git,go,go-get,Git,Go,Go Get,我试着从一个私有的gitlab服务器,从mac上获取一个存储库 我将git配置(~/.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 remo
[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 url,但失败了
$ 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配置?我怎样才能解决这个问题
我知道问题与这个问题类似:还有许多其他关于私人回购的问题
我的问题不同在调用
git clone
之前发生错误。当您调用go-get
时,它会对URL进行HTTPS调用,以检查标题并查看是否提供了go-get
重定向。这就是失败的地方
它失败是因为服务器提供的证书没有由您在本地系统上指定为受信任的证书颁发机构签名。这可能是因为您的内部gitlab使用的是未签名的证书,用于签名的CA尚未添加到本地系统,或者您的工作场所使用的是中间人代理,而您没有添加该代理的CA。您可以尝试修复证书问题,也可以只运行:
go get -insecure gitlab.mysite.com/group/project
-unsecure标志允许从存储库获取和解析
使用HTTP等不安全方案的自定义域。小心使用
值得注意的是,这绕过了用于签署服务器证书的CA的验证。该错误发生在调用
git clone
之前。当您调用go-get
时,它会对URL进行HTTPS调用,以检查标题并查看是否提供了go-get
重定向。这就是失败的地方
它失败是因为服务器提供的证书没有由您在本地系统上指定为受信任的证书颁发机构签名。这可能是因为您的内部gitlab使用的是未签名的证书,用于签名的CA尚未添加到本地系统,或者您的工作场所使用的是中间人代理,而您没有添加该代理的CA。您可以尝试修复证书问题,也可以只运行:
go get -insecure gitlab.mysite.com/group/project
-unsecure标志允许从存储库获取和解析
使用HTTP等不安全方案的自定义域。小心使用
值得注意的是,这绕过了用于签署服务器证书的CA的验证。感谢您的回答,不安全标志起作用,但不是一个选项,因为目标是让go模块进行go-get调用为什么go-get在可以使用ssh完成所有操作的情况下使用https进行第一次调用?它无法对URL进行ssh调用以获取该URL的HTTP头
go-get
不知道您提供的URL是否直接指向存储库,或者它是否只是一个虚荣URL,然后通过go-import
meta标记转发到实际的回购。因此,它首先使用HTTPS GET查询命中端点并查找标记。如果它不存在,它将尝试从该URL克隆。如果是,它将尝试克隆该元标记中存在的URL。在调用git
之前查询meta标记。然后@BlueMagma有两个选项go-get
调用仍然使用go模块工作,它们只需要额外的go-get
步骤,而不仅仅是使用go-build
并让它处理依赖项获取。另一个选择是找出导致证书问题的原因。我在回答中列出了3种最有可能的情况。贵公司的IT支持团队可能会告诉您具体情况。谢谢您的回答,不安全标志起作用,但不是一个选项,因为目标是让go模块进行go-get调用为什么go-get在可以使用ssh完成所有操作的情况下使用https进行第一次调用?它无法对URL进行ssh调用以获取该URL的HTTP头go-get
不知道您提供的URL是否直接指向存储库,或者它是否只是一个虚荣URL,然后通过go-import
meta标记转发到实际的回购。因此,它首先使用HTTPS GET查询命中端点并查找标记。如果它不存在,它将尝试从该URL克隆。如果是,它将尝试克隆该元标记中存在的URL。在调用git
之前查询meta标记。然后@BlueMagma有两个选项go-get
调用仍然使用go模块工作,它们只需要额外的go-get
步骤,而不仅仅是使用go-build
并让它处理依赖项获取。另一个选择是找出导致证书问题的原因。我在回答中列出了3种最有可能的情况。您公司的IT支持团队可能会告诉您具体情况。