git - 获取私有(private)软件包时无法读取用户名

原文 标签 git go go-modules

我有一个Go项目,该项目使用github中托管的私有(private)库。当前正在使用go模块,因此我通过SSH配置了对github的访问权限,因此我可以使用go get github.com/myorg/mylibrary,此方法以前是可行的,但是当我再次执行go get github.com/myorg/mylibrary@commitId时,现在会收到下一条消息:

github.com/myorg/mylibrary@v5.2.1-0.20210110224145-108714b2f88c: verifying module: 
github.com/myorg/mylibrary@v5.2.1-0.20210110224145-108714b2f88c: reading https://sum.golang.org/lookup/github.com/!myorg/mylibrary@v5.2.1-0.20210110224145-108714b2f88c: 410 Gone
        server response:
        not found: github.com/myorg/mylibrary@v5.2.1-0.20210110224145-108714b2f88c: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/b186106557bfd44bc932dd151f0fcd2758d8d89d09ab32f8915de7f151e393d1: exit status 128:
                fatal: could not read Username for 'https://github.com': terminal prompts disabled 
我已经尝试过:
env GIT_TERMINAL_PROMPT=1 go get github.com/myorg/mylibrary@commitId
但还是一样那么,为什么要得到这个呢?我该如何克服呢?

最佳答案

您可以使用ssh +公钥通过go模块访问github私有(private)项目
首先将git HTTP方案替换为ssh方案

git config -e
// if you want replace scheme with global config use --global
git config --global -e
然后添加以下行
[url "git@github.com:"]
     insteadOf = https://github.com
确保您的公钥已添加到github
cat ~/.ssh/id_rsa.pub
// if file not found use ssh-keygen to generate it 
ssh-keygen
在URL下将公共(public) key 添加到github访问并将其添加
https://github.com/settings/keys
现在您可以在go mod中获得github私有(private)项目

相关文章:

git - 在git commit中查找编辑度最高的文件

mongodb - 在上下文中使用mgo

go - 为什么用户定义的时间位置为零

json - 如何替换/更新golang中的json数组内的键值?

go - go-run给我一个相对子模块上的错误“找不到包”

go - 如何在go dep项目中将go模块用作依赖项?

git - 如何确定Git是将文件处理为二进制文件还是文本文件?

linux - 如何列出某些提交之间的提交消息?

node.js - Git根据其他仓库推送新仓库,开始新的仓库

go - 如何从父目录运行同级Go应用程序(模块)