我从浏览器中使用Github UI创建了私人回购示例站点/myprivaterepo。
然后我进入我的go目录(在桌面上)并克隆它:
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
到目前为止一切顺利。创建文件调度程序。Go,添加到repo,并推送。
$ vim scheduler.go
$ git add scheduler.go
$ git commit
$ git push
的一切很好。但是当我去一台干净的笔记本电脑并试图克隆回购时,我得到了一个错误:
# Now on laptop, which doesn't yet know about the repo
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
# At this point it should ask for my user ID and password ,right? But it doesn't.
# Instead, this error occurs:
cd .; git clone https://github.com/examplesite/myprivaterepo /Users/tom/go/src/github.com/examplesite/myprivaterepo
Cloning into '/Users/tom/go/src/github.com/examplesite/myprivaterepo'...
fatal: could not read Username for 'https://github.com': terminal prompts disabled
package github.com/examplesite/myprivaterepo: exit status 128
为什么我的笔记本电脑讨厌我自己的回购,我怎样才能让它接受它的命运?谢谢。
我发现这非常有用,它解决了我的问题。这个命令将允许你的2FA做它的事情(并省去你输入用户名和密码的麻烦):
Github:
git config --global --add url."git@github.com:".insteadOf "https://github.com/"
对于 Gitlab:
git config --global --add url."git@gitlab.com:".insteadOf "https://gitlab.com/"
来源:http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html
如果你不使用2FA,你仍然可以使用SSH,这是可以工作的。
生成的.gitconfig将像这样:
[url "git@github.com:"]
insteadOf = https://github.com/
我发现这非常有用,它解决了我的问题。这个命令将允许你的2FA做它的事情(并省去你输入用户名和密码的麻烦):
Github:
git config --global --add url."git@github.com:".insteadOf "https://github.com/"
对于 Gitlab:
git config --global --add url."git@gitlab.com:".insteadOf "https://gitlab.com/"
来源:http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html
如果你不使用2FA,你仍然可以使用SSH,这是可以工作的。
生成的.gitconfig将像这样:
[url "git@github.com:"]
insteadOf = https://github.com/
虽然关于在GitHub中使用SSH身份验证有很多答案,但这个问题与go模块的正确用法有关。为此,卢娜·洛夫古德给出了正确的答案。
重申一下,默认情况下Go会尝试使用公共存储库来下载包。我们需要指定它使用SSH进行私有回购的身份验证。要做到这一点,可以使用以下方法:
go env -w GOPRIVATE=github.com/{your-username}/{your-lib}
.
.
go mod vendor # this will now work for your private lib
Glob模式也可以工作,因此如果您有多个私有存储库,您可以添加
go env -w GOPRIVATE=github.com/{your-username}/*
编辑:措辞正确。