如何重置“git credential-osxkeychain”中存储的凭据?

问题描述 投票:0回答:12

我已按照 GitHub 说明设置帐户,并且可以克隆,但无法远程推送。

当我执行“git Push”时,出现 403 错误。它有正确的 URL。我尝试了“git credential-osxkeychain get”来查看它给出的内容,这会打印出错误的凭据。

我相信发生的事情是它第一次要求提供凭据,我以为这是另一个应用程序要求的,并且它输入了错误的凭据。

我只需要重置它,以便它为我的 GitHub 帐户使用正确的钥匙串项目。

我已经尝试过:

git credential-osxkeychain erase
git credential-osxkeychain set

程序从不给出任何提示。如果我没有做正确的事情,Set 会说“错误的输入”。我尝试输入“

password=password
”等,但是当我执行“get”时,我仍然得到旧的。

我无法弄清楚它们存储在哪里,因为它们不在 .gitconfigure 中。此外,最近没有可能是这样的钥匙扣物品。 (我的钥匙串中有几个 GitHub 帐户,但它没有使用其中任何一个。)

macos git github
12个回答
234
投票

从航站楼出发: (需要输入以下三行)

 $ git credential-osxkeychain erase ⏎
 host=github.com  ⏎
 protocol=https   ⏎
 ⏎
 ⏎

注意:在上面输入“protocol=https”后,您需要按两次~~RETURN~~(每个'⏎'相当于'按回车/回车')


95
投票

我不确定如何通过命令行擦除,但通过钥匙串访问应用程序可以相当轻松地完成此操作。只需转到“应用程序”->“实用程序”->“钥匙串访问”,然后输入“github.com”。您可以删除无效项目或使用应用程序更新密码。


43
投票

在命令行中尝试此操作。

git config --local credential.helper ""

每次当我在 OSX 钥匙串中拥有多个 GitHub 帐户时,它都适用于我


34
投票

解决方案原来是这样的:

命令

git credential-osxkeychain
使用我钥匙串中的 first GitHub 帐户条目。此人并非有权访问相关项目的人。

我通过触摸 Keychain Access 中的帐户来解决该问题,使其日期发生变化(我想我只是更改了评论),现在它成为最新的 GitHub 帐户,它成为第一个返回到 credential-osxkeychain 的帐户,因此一切工作了。

如果有一种更好的方式支持多个 GitHub 帐户就好了,但大多数人可能只有一个主帐户,不会遇到这个问题。


10
投票

在 Mac 上,使用命令

git credential-osxkeychain erase

或从 ApplicationsUtilitiesKeychain Access 手动从钥匙串中删除。然后删除 github.com 钥匙串。然后使用推送;它将要求钥匙串访问;然后否认。

它将要求输入新的用户名和密码,添加它,然后推送一个文件。

git push
之后我发现了这个错误。然后我使用大写- 问题:

远程:用户2对user1/file.git的权限被拒绝(以前存在 用户)。致命:无法访问“https://github.com/xxxxxxxxxxxx/”: 请求的 URL 返回错误:403


10
投票

git-credential-osxkeychain 将密码存储在 Apple 钥匙串中,如上所述。

默认情况下,gitcredentials 仅考虑域名。如果您希望 Git 考虑完整路径(例如,如果您有多个 GitHub 帐户),请将

useHttpPath
变量设置为
true
,如 http://git-scm.com/docs/gitcredentials.html 中所述。请注意,更改此设置将再次询问每个 URL 的凭据。


6
投票

您可以删除现有凭据并通过“钥匙串访问”添加新凭据

参考。 https://docs.github.com/en/github/getting-started-with-github/updating-credentials-from-the-macos-keychain



4
投票

尝试跑步

/Applications/Utilities/Keychain Access


3
投票

@bk2204 answer 仅在终端对我有用:

$ echo url=https://github.com | git credential reject

0
投票

我可以直接通过钥匙串应用程序本身来完成此操作。准确查找 Kind='Internet 密码' 和 Name='远程 git 存储库所在的 url' 条目。然后更改密码字段中的帐户和 PAT 令牌


0
投票

使用 maz 回答,单行:

$ echo "host=github.com\nprotocol=https" | git credential-osxkeychain erase

为其设置一个方便的

git clear-credentials
别名:

$ git config --global alias.clear-credentials '!f(){ REMOTE=origin; git remote -v | grep $REMOTE | head -n1 | sed -E "s/^$REMOTE\t+([a-z]+):\/\/([^\/]+).*/protocol=\1\nhost=\2/" | git credential-osxkeychain erase ;};f'
© www.soinside.com 2019 - 2024. All rights reserved.