我正在windows 10上试用WSL 2,到目前为止进展顺利,但我已经努力了两周,因为出于某种原因,go get
不使用或无法使用Git凭据管理器来提示我的凭据。
我关注了这个博客,用GCM建立了WSL2https://www.edwardthomson.com/blog/git_credential_manager_with_windows_subsystem_for_linux.html
它对大多数日常任务都很有效,比如克隆、阅读和写作。但是当使用go get
时,我会得到这个错误。
go get <remote github repo>@<latest commit id>
go: <remote github repo> 681dceefc81203e094872401c184d038090d6049 => v0.0.17-0.20200501212733-681dceefc812
go get: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone
server response:
not found: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/232ff028cb2fdebd254e30bfc612843483f0fe3fbeb18d5fc8fb4b20f21c9021: exit status 128:
fatal: could not read Username for 'https://github.com': terminal prompts disabled
已经尝试过ssh密钥,这里提出的解决方案在';终端提示已禁用';github私有回购错误
但错误仍然是一样的,当启用envGIT_TERMINAL_PROMPT=1
时,什么都不会发生,我想这是因为WSL2没有这样做的权限。不管怎样,我也试过这个工具https://github.com/microsoft/Git-Credential-Manager-for-Mac-and-Linux通过为普通凭证存储设置一个变量,它会在终端中提示输入凭证。但我使用2FA,因为它是组织所必需的,并且提示只要求输入用户名和密码,所以身份验证失败。
所以我必须联系一个正在使用Mac的伴侣。他能够go get
影响go.mod
的依赖关系,提交并推动更改,这样我就可以从那里提取并继续。当然,这并不理想,他也没有任何问题,他使用osxkeychain来管理他的git凭据。
有人面临过这个问题吗?或者知道如何解决?事先非常感谢。
Go无法理解某些模块是私有的,它们的校验和不应根据Go的校验和库进行验证。以下错误来自
verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone
如果可能,至少使用1.13或更高版本。为了更好地管理私有模块,Go引入了名为GOPRIVATE
、GONOPROXY
和GONOSUMDB
的env变量。向Go发出您正在导入私人回购的信号的最简单方法是使用GOPRIVATE
。将私有转发的模式设置为GOPRIVATE
env变量,以抑制校验和验证和GOPROXY
的使用。以下示例避免了该层次结构中所有转发的校验和:
GOPRIVATE=github.com/<your org>/*
在这里和这里查看答案。您也可以执行go help module-private
以获得帮助。