1

我遇到了一个奇怪的错误。出于某种原因,我需要从 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 It's throw me 时,错误提示无法从 www.... 这是错误消息。

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 config 可以成功。顺便说一句,我可以 git clone 这个库到 go/src 文件夹,然后运行 ​​go build 和 go install,不幸的是,它不起作用。仍然不能在 go 程序中使用这个库。

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

4

3 回答 3

0

如果您的朋友设法使用类似的配置通过 SSH 获取存储库,则您需要加倍以了解以下之间的任何差异:

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

我如何在本地服务器上使用 repo 进行工作”描述了相同的git config --global url.ssh://git@origin.url:7999/".InsteadOf "https://xxx技术,所以它应该可以工作。

但它确实指出:

要使用带有私有仓库的模块,我们必须设置GOPRIVATE

go env -w GOPRIVATE=origin.url/*

设置后GOPRIVATE,模块将直接从指定的 git repos 中提取,而不是从 Go 公共代理中提取。

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

于 2021-03-28T03:08:42.350 回答
0

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/"
于 2021-03-28T03:14:12.967 回答
0

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

于 2021-03-30T05:41:46.813 回答