代码之家  ›  专栏  ›  技术社区  ›  Dean Schulze

go-get无法使用不可路由的IP地址

  •  0
  • Dean Schulze  · 技术社区  · 4 年前

    我在本地网络(192.168.0.12)上的计算机上设置了git repo。它有一个条目 /etc/hosts

    192.168.0.12    ubuntu-18-extssd
    

    go-get无法识别我的主机名( ubuntu-18-extssd )作为主机名,所以我使用IP地址。

    现在,当我试着这样做的时候

    go get 192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage
    

    它返回错误

    package 192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage: unrecognized import path "192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage": https fetch: Get "https://192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage?go-get=1": dial tcp 192.168.0.12:443: connect: connection refused
    

    所以我告诉git改用ssh:

    git config --global url."dean@192.168.0.12:".insteadOf "https://192.168.0.12/"
    

    在我的~/.gitconfig中,我有

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

    但go get仍然会给出同样的错误。不过,github的入口是有效的。

    为什么组合 go get git 当我告诉它使用ssh时,它还在尝试使用https吗?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Peter saif iqbal    4 年前

    Go无法从以下内容推断存储库类型 192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage 直接,因此它试图在以下位置查找元标签 https://192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage?go-get=1 :

    如果导入路径不是已知的代码托管站点,并且缺少版本控制限定符,则go工具会尝试通过https/http获取导入,并在文档的HTML中查找标记。

    https://golang.org/cmd/go/#hdr-Remote_import_paths

    如果你不想运行一个返回适当元标签的服务器,你必须通过添加 .git 导入路径。根据存储库的位置,使用以下命令之一:

    go get 192.168.0.12/gitrepo/go-package-test-stringutil/stringpackage.git
    go get 192.168.0.12/gitrepo/go-package-test-stringutil.git/stringpackage
    go get 192.168.0.12/gitrepo.git/go-package-test-stringutil/stringpackage