我使用用户名密码来推送我的代码。它工作了几个月,但突然我不能这样做,并得到这个错误:

Username for 'https://github.com': shreyas-jadhav
Password for 'https://shreyas-jadhav@github.com':
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.

请注意,这个链接没有任何帮助。即使使用生成的令牌也无济于事。

主持人注:这是GitHub计划的一部分,很快将是永久的服务变化


当前回答

我今天下午遇到了这个问题,并通过将参考文献3中所述的GitHub密码替换为参考文献2中生成的令牌来解决这个问题。

参考文献1:参见API和Git操作的令牌身份验证要求。不再支持该密码。 参考文献2:因此,您应该在本教程中生成一个令牌,并使用它代替您的密码作为凭据。 参考资料3:如果没有提示您输入用户名和密码,则您的凭据可能缓存在您的计算机上。您可以在Keychain中更新凭据,用本教程中描述的令牌替换旧密码。

其他回答

我今天下午遇到了这个问题,并通过将参考文献3中所述的GitHub密码替换为参考文献2中生成的令牌来解决这个问题。

参考文献1:参见API和Git操作的令牌身份验证要求。不再支持该密码。 参考文献2:因此,您应该在本教程中生成一个令牌,并使用它代替您的密码作为凭据。 参考资料3:如果没有提示您输入用户名和密码,则您的凭据可能缓存在您的计算机上。您可以在Keychain中更新凭据,用本教程中描述的令牌替换旧密码。

这里有一个简单的解决方案:

进入GitHub→设置→开发者设置→个人访问令牌。重新生成令牌并复制它。 在任何本地存储库上,当git推送时,输入您的用户名,密码是生成的令牌

无需为每个HTTPS Git操作手动输入令牌,您可以使用Git客户端缓存令牌。

在终端中输入如下命令:

# Set Git to use the credential memory cache
git config --global credential.helper cache

输入如下命令修改默认密码缓存超时时间。

# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

如果您使用的是HTTPS

按照文档中的指示在令牌设置中生成一个令牌 如果存储库已经存在,则必须按照以下格式更改远程URL: https://<username>:<token>@github.com/<repository_url> Git远程删除原点 git remote add origin https://<USERNAME>:<TOKEN>@<GIT_URL>.git git拉#验证 如果克隆存储库 git克隆https://<USERNAME>:<TOKEN>@<GIT_URL>.git

试试这个(对我很管用):

根据以下指南生成SSH密钥:生成新的SSH密钥 删除所有旧的远程使用HTTPS与git远程删除原点; 使用SSH引用添加一个新的远程(您可以通过存储库中的“code”按钮获得它,然后按“SSH”)。

还有一个非常简洁的脚本,有助于将HTTPS克隆的Git存储库转换为ssh协议,而无需删除和克隆Git存储库:

将HTTPS GitHub克隆转换为使用SSH