我已按照 GitHub 说明设置帐户,并且可以克隆,但无法远程推送。
当我执行“git Push”时,出现 403 错误。它有正确的 URL。我尝试了“git credential-osxkeychain get”来查看它给出的内容,这会打印出错误的凭据。
我相信发生的事情是它第一次要求提供凭据,我以为这是另一个应用程序要求的,并且它输入了错误的凭据。
我只需要重置它,以便它为我的 GitHub 帐户使用正确的钥匙串项目。
我已经尝试过:
git credential-osxkeychain erase
git credential-osxkeychain set
程序从不给出任何提示。如果我没有做正确的事情,Set 会说“错误的输入”。我尝试输入“
password=password
”等,但是当我执行“get”时,我仍然得到旧的。
我无法弄清楚它们存储在哪里,因为它们不在 .gitconfigure 中。此外,最近没有可能是这样的钥匙扣物品。 (我的钥匙串中有几个 GitHub 帐户,但它没有使用其中任何一个。)
从航站楼出发: (需要输入以下三行)
$ git credential-osxkeychain erase ⏎
host=github.com ⏎
protocol=https ⏎
⏎
⏎
注意:在上面输入“protocol=https”后,您需要按两次~~RETURN~~(每个'⏎'相当于'按回车/回车')
我不确定如何通过命令行擦除,但通过钥匙串访问应用程序可以相当轻松地完成此操作。只需转到“应用程序”->“实用程序”->“钥匙串访问”,然后输入“github.com”。您可以删除无效项目或使用应用程序更新密码。
在命令行中尝试此操作。
git config --local credential.helper ""
每次当我在 OSX 钥匙串中拥有多个 GitHub 帐户时,它都适用于我
解决方案原来是这样的:
命令
git credential-osxkeychain
使用我钥匙串中的 first GitHub 帐户条目。此人并非有权访问相关项目的人。
我通过触摸 Keychain Access 中的帐户来解决该问题,使其日期发生变化(我想我只是更改了评论),现在它成为最新的 GitHub 帐户,它成为第一个返回到 credential-osxkeychain 的帐户,因此一切工作了。
如果有一种更好的方式支持多个 GitHub 帐户就好了,但大多数人可能只有一个主帐户,不会遇到这个问题。
在 Mac 上,使用命令
git credential-osxkeychain erase
。
或从 Applications → Utilities → Keychain Access 手动从钥匙串中删除。然后删除 github.com 钥匙串。然后使用推送;它将要求钥匙串访问;然后否认。
它将要求输入新的用户名和密码,添加它,然后推送一个文件。
git push
之后我发现了这个错误。然后我使用大写-
问题:
远程:用户2对user1/file.git的权限被拒绝(以前存在 用户)。致命:无法访问“https://github.com/xxxxxxxxxxxx/”: 请求的 URL 返回错误:403
git-credential-osxkeychain 将密码存储在 Apple 钥匙串中,如上所述。
默认情况下,gitcredentials 仅考虑域名。如果您希望 Git 考虑完整路径(例如,如果您有多个 GitHub 帐户),请将
useHttpPath
变量设置为 true
,如 http://git-scm.com/docs/gitcredentials.html 中所述。请注意,更改此设置将再次询问每个 URL 的凭据。
您可以删除现有凭据并通过“钥匙串访问”添加新凭据
尝试跑步
/Applications/Utilities/Keychain Access
。
@bk2204 answer 仅在终端对我有用:
$ echo url=https://github.com | git credential reject
使用 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'