Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
go get:Git设置被忽略_Git_Go_Go Get - Fatal编程技术网

go get:Git设置被忽略

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

我试着从一个私有的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 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支持团队可能会告诉您具体情况。