设置 url 的 git.config 不起作用

the git.config of setting url doesn't work

我遇到了一个奇怪的bug。出于某种原因,我需要从 ssh 获取一个库,而不是 https:// 而且我认为我设置了正确的 .gitconfig。

Here is my .gitconfig:
[user]
    name = nickName
    email = email@email.com
[difftool "sourcetree"]
    cmd = '' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
    cmd = "'' "
    trustExitCode = true
[url "ssh://git@origin.url:7999/"]
    insteadOf = https://url/scm

然而,当我 运行 go get url/lirbaryName 它向我抛出了无法从 www..... 获取库的错误,看起来 go get 仍在尝试从 https:// 而不是 ssh: 下载库。这是错误消息。

go: url/lirbaryName@versionnumber/go.mod: verifying module: url/lirbaryName@versionnumber/go.mod: reading https://sum.golang.org/lookup/url/lirbaryName@versionnumber: 410 Gone
        server response:
        not found: wurl/lirbaryName@versionnumber: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/7f429b03663193143b68514b6b1945024c80ec1d9b17c4afa862b0b8304a9db8: exit status 128:
                fatal: could not read Username for 'https://url': terminal prompts disabled

知道这个错误吗?我的go版本是1.15,这个库没坏,我朋友用同样的git配置也能go成功。 顺便说一下,我可以 git 将这个库克隆到 go/src 文件夹,然后 运行 构建并安装,不幸的是,它不起作用。还是不能在go程序中使用这个库

如果您需要更多信息,请告诉我。 谢谢你的帮助。

如果您的朋友设法使用类似的配置通过 SSH 获取存储库,您需要加倍计算两者之间的任何差异:

  • 你的环境变量和你朋友的环境变量
  • 你的 go env 和你朋友的 go env

"" 描述了相同类型的 git config --global url.ssh://git@origin.url:7999/".InsteadOf "https://xxx 技术,因此它应该有效。

但确实指出:

To use modules with private repos we have to set GOPRIVATE

go env -w GOPRIVATE=origin.url/*

When GOPRIVATE is set, modules will be pulled directly from the specified git repos instead of the Go public proxy.

这可能是您的环境与您朋友的环境可能存在差异的一个例子。

go get 默认禁用“终端提示”。这可以通过设置 git:

的环境变量来改变
env GIT_TERMINAL_PROMPT=1 go get url/lirbaryName

或者像下面这样改变git,

git config --global --add url."git@github.com:".insteadOf "https://github.com/"

我通过举例说明如何解决此问题来结束此问题。 我已经检查了 git env 和 go env。一切对我来说都很好。 所以最后我可以使用 go get -v url/lirbaryName 下载成功。 但是 go get url/lirbaryName 仍然对我不起作用。 我不明白为什么,但神奇的是它现在对我有用。 有人知道吗?