收到致命错误: 无法读取'https://github.com'的用户名: 终端提示已禁用,同时在终端中构建项目。

31

我已经开始使用Golang进行项目开发。在使用make命令构建时,我遇到了以下错误:

fatal: could not read Username for 'https://github.com': terminal prompts disabled

为了解决这个问题,我在查阅了类似的帖子go get results in 'terminal prompts disabled' error for github private repo后采取了以下措施:

export GIT_TERMINAL_PROMPT=1

但是这并没有解决问题,现在似乎进入了一个无限循环,要求输入用户名和密码。

我的git配置如下:

$git config --list

remote.origin.url=git@github.com:GolangProjects/Project1.git

即使进行了此配置,为什么它仍然使用https而不是SSH,我一点头绪也没有。请帮助。


你的 Makefile 文件中是否包含任何对 git 或任何可能使用它的程序(如包管理器)的调用?你的项目中是否有任何子模块? - bk2204
是的,作为构建的一部分,它会拉取并安装Go的依赖项。 - Joy
请考虑提供一个 [mcve]。您从 Makefile 运行哪些命令? - torek
3个回答

49
创建一个SSH密钥,将其用作您的git仓库默认登录方法。 您可以按照此链接创建用于机器身份验证的SSH密钥: 生成新的SSH密钥并将其添加到ssh-agent中 然后使用此项设置,将默认登录方法更改为使用SSH密钥而不是凭据。
git config --global url.ssh://git@github.com/.insteadOf https://github.com/

6
给Mac/iOS开发者的一个警告:上面的全局Git配置会修复命令行中的问题,但会破坏Xcode中的Git。 - Luke Redpath
你有没有解决方案?我目前在使用fastlane时遇到了这个问题。 - Xaxxus

1

你的导入是否来自私有的代码库?

如果是,你需要让 Go 知道它。

go env -w GOPRIVATE=github.com/mycompany/*

或者

export GOPRIVATE=*.corp.example.com,github.com/mycompany/*

我曾遇到过同样的问题,并从https://dev59.com/FFwY5IYBdhLWcg3wwqP1#60323360中找到了解决方法。


这看起来与链接的答案 https://meta.stackexchange.com/a/211726/346302 实际上是相同的答案。 - Guildenstern
1
那我应该怎么办?我是不是应该将这个问题报告为重复,而不是提供答案? - Jonathan Rynd
1
我倾向于在问题的评论中链接到答案。 - Guildenstern

0
遇到了与git fetch相同的问题:
Fetching the repository
  /usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +refs/heads/master*:refs/remotes/origin/master* +refs/tags/master*:refs/tags/master*
  Error: fatal: could not read Username for 'https://github.com': terminal prompts disabled
  The process '/usr/bin/git' failed with exit code 128
  Waiting 14 seconds before trying again

要解决这个问题,你需要更新仓库的“secrets”令牌。

谢谢你的提示。我在GitHub Actions上遇到了同样的问题,更新了个人访问令牌(PAT)的变量后,问题得到了解决。 - Goran Vasic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接