设置 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 仍然对我不起作用。
我不明白为什么,但神奇的是它现在对我有用。
有人知道吗?
我遇到了一个奇怪的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 仍然对我不起作用。 我不明白为什么,但神奇的是它现在对我有用。 有人知道吗?