为了账号安全,请及时绑定邮箱和手机立即绑定

去使用 ssh 而不是 https(不在 github 上)

去使用 ssh 而不是 https(不在 github 上)

Go
喵喔喔 2022-06-27 15:09:02
我们有一个只能通过 ssh/git(没有 https)访问的私有代码存储库,我们希望在那里托管我们的 go 代码/模块。首先我试过:git config --global url."git@code.internal.local:".insteadOf "https://code.internal.local/"所以,以下两项工作都很好:git clone git@code.internal.local:reponame.gitgit clone https://code.internal.local/reponame但是go get code.internal.local/reponame失败了,因为 go 仍然坚持尝试 https://... 而不是 git。package code.internal.local/reponame: unrecognized import path "code.internal.local/reponame": https fetch: Get "https://code.internal.local/reponame?go-get=1": dial tcp 192.168.0.5:443: i/o timeout
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

我检查了我的.gitconfig并找到了这个(对于github私人仓库)-

[url "ssh://git@github.com/"]
        insteadOf = https://github.com/

上面的配置对我有用。您也可以尝试在项目根目录中创建一个.netrc文件,但不应其推送到远程代码仓库。


查看完整回答
反对 回复 2022-06-27
?
慕容708150

TA贡献1831条经验 获得超4个赞

问题

您观察到的行为在文档的“远程导入路径”部分中有详细说明go get。特别是,仅通过查看远程导入路径code.internal.local/reponamego get无法知道哪个 VCS 以及哪个 URL 用于实际托管该包。

为了解决这个问题,go get使用一组 HTTPS(和 HTTP,作为后备,必须显式启用)GET 请求到一组由指定导入路径构造的特殊 URL。假定为此类调用提供服务的任何东西都能够以标识要使用的 VCS 和存储库的 URL 的回复进行响应。

可能的解决方案

如果您正在使用模块,您可以在团队方便的地方设置一个专用的“模块代理”(此外,可能部署了许多代理),并让团队成员使用GOPROXY指向方便实例的环境变量。有关go help modules更多信息,请参阅。

否则,如果您可以放置一个网络服务器来回答远程导入路径解析请求,您可以这样做;nginx 和 apache 可以用于它们的库存模块。

否则,您可能需要求助于手动操作。


查看完整回答
反对 回复 2022-06-27
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我在这里发布了详细答案https://stackoverflow.com/a/65925691/348719

基本上,您应该在客户端和服务器上添加.git后缀。没有后缀,将使用 https。requiremodule.gitgo get

  • 在客户端(go.mod)(将版本号更改为更正):

require code.internal.local/reponame.git v0.1.0

最好添加go env -w GOPRIVATE=code.internal.local

  • 在服务器 (go.mod)

module code.internal.local/reponame.git


查看完整回答
反对 回复 2022-06-27
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号