我已经使用GitHub有一段时间了,git添加、git提交和git推送都没问题,到目前为止还没有任何问题。突然我出现了一个错误

fatal:认证失败

在终端中,我克隆了一个存储库,处理了一个文件,然后我使用git add将文件添加到提交日志中,当我做git提交时,它工作得很好。最后,git push请求用户名和密码。我输入正确,每次我这样做,它都会显示相同的错误。

这个问题的原因是什么,我该如何解决它?

.git/config的内容如下:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://www.github.com/######/Random-Python-Tests
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = #####
        email = ############

当前回答

我不确定我做了什么得到这个错误,但做:

git remote set-url origin https://...

对我没用。然而:

git remote set-url origin git@bitbucket.org:user/repo

以某种方式工作。

其他回答

我得到了同样的错误。我尝试了本页中提到的所有解决方案,但它们都不起作用。最后,我找到了解决方案。

如果您的系统密码最近随时更改,就会出现这种错误。它将尝试从旧密码验证。所以,请遵循以下步骤:

进入控制面板 点击用户帐户 在凭证管理下 进入管理Windows凭证 转到通用凭证 展开Git服务器选项卡 点击Remove from vault

您也可以单击“编辑”,直接修改存储在这里的密码。

首先,你可以确保使用正确的URL:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

然后,如果它之前工作,如果它没有要求您的用户名,这一定是因为您已经将您的凭据(登录名/密码)存储在$HOME/.netrc文件中,正如这里所解释的那样。您可以再次检查这些设置,并确保您的代理(如果有的话)没有更改。

检查git配置——global credential.helper的输出。 并确保凭证是你的GitHub用户帐户,和一个PAT(个人访问令牌)。

您可以使用Git凭据助手更新您的凭据,如下所示。


如果这仍然不工作,你可以切换到SSH URL:

git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git

但这意味着您已经在帐户设置中发布了SSH公钥。


有关Visual Studio Code的具体信息,请参见“git push:缺少或无效凭证”。致命:'https://github.com/username/repo.git'认证失败"

您可以取消选择设置git。terminalAuthentication以避免错误消息。

我的解决方案是:

C:\Users\USERNAME\AppData\Local\Atlassian\SourceTree的访问权限 找到文件passwd 右键单击该文件,用记事本打开 你会看到一个用户名和密码列表,如下所示:

username@dev.azure.com AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAMUOX3Q56PEuXEBSDFAFAASEH...

找到您输入错误的用户名和密码,并删除它 保存文件,并关闭它 SourceTree将在下一次推送或获取时再次询问您的用户名和密码

我尝试了令牌验证方法,让它工作~3次,浪费了大约2个小时的时间。出于某种原因,它在我们公司不太适用。

我的解决方案是将身份验证方法从HTTPS改为SSH。这是一个Github指南(https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)。

创建SSH密钥后,请记住更改SSH地址来源:

git remote add origin git@github.com:user/repo.git

启用凭据助手解决了我的问题。