Git认为我是另一个用户,无法访问我的github代码库。

9

我曾经在Github上有一个账号(Mariogs37),但现在已经不再使用。与此同时,我创建了一个新的账号(bclayman),并且想要开始使用它。我在Github上创建了一个仓库,并运行了以下命令:

git remote add origin https://github.com/bclayman/SquashScraper.git

我没有收到任何错误信息,然后我运行:
git push -u origin master

然而,我收到了以下错误消息:
remote: Permission to bclayman/SquashScraper.git denied to Mariogs37.
fatal: unable to access 'https://github.com/bclayman/SquashScraper.git/': The requested URL returned error: 403

我在谷歌上搜索了类似的问题,并找到了这个链接:
http://stackoverflow.com/questions/24019258/git-thinks-im-the-wrong-user

我按照vonC的回答指示进行操作(在这里:https://help.github.com/articles/generating-ssh-keys/#step-3-add-your-ssh-key-to-github)。在将我的SSH密钥添加到github的最后,我在终端中得到了以下内容:
Hi bclayman! You've successfully authenticated, but GitHub does not provide shell access.

我尝试将本地存储库推送到Github,但遇到了同样的错误。有任何想法为什么它仍然认为我是Mariogs37(因此没有权限推送到由bclayman拥有的Github存储库)吗?
谢谢, bclayman

你更新了.gitconfig吗?还要检查一下这个:http://superuser.com/questions/232373/how-to-tell-git-which-private-key-to-use - Jörn Hees
我应该用什么来更新它?在我的gitconfig中,我已经设置了我的电子邮件和姓名,并且凭据中有“helper = osxkeychain”。 - anon_swe
哦,我刚看到你正在使用https URI...上面的内容适用于ssh,但是如果要更改https用户,您可能需要阅读这篇文章:https://dev59.com/nmw15IYBdhLWcg3whMA1#14417827 - Jörn Hees
啊,如果你正在使用osxkeychain,它可能已经在你的钥匙串中保存了https凭据(用户名和密码),所以你可以尝试在那里删除它们。 - Jörn Hees
2个回答

9

这很可能是对使用凭据的误解。

GitHub提供了两种不同的协议来访问您的仓库:

  • HTTPS
  • SSH

SSH:

此协议使用您~/.ssh文件夹中的ssh密钥和设置。如果您像这样添加远程主机,它将被使用:

git remote add origin git@github.com:bclayman/SquashScraper.git

HTTPS(您选择的协议):

这种协议使用https凭据,这些凭据根据您的系统不同可能存储在各种位置(如果有的话)。由于您似乎正在使用OS X Keychain,因此它们很可能存储在那里。如果您像这样添加远程,则会使用https协议:

git remote add origin https://github.com/bclayman/SquashScraper.git

为了解决这个问题,您可以打开OS X钥匙链并搜索 https://github.com ,然后删除所有显示的项目。下次尝试推送/获取时,它应该再次要求您输入用户名和密码。


谢谢!我一直遇到一个关于 gitbox 和旧仓库 / 更改的用户名的持续问题。从钥匙串中清除这些信息是我的解决方法。 - SimplGy

1

你尝试过以下内容吗?

git config --global user.name "bclayman"
git config --global user.email "email_addr_of_bclayman"

同时确保在你的~/.ssh文件夹下,没有任何与Mariogs37相关的ssh密钥,如果有,请删除它们。只保留bclayman的ssh密钥。


这不仅会改变 git 提交中使用的信息吗?我认为 https 凭据存储在其他地方...而 ssh 凭据则在 ~/.ssh/config 中。 - Jörn Hees
它会更改您的~/.gitconfig文件,您应该使用它来与Github服务器通信。 - mainframer
我的~/.ssh目录下有以下文件:github_rsa、github_rsa.pub、id_rsa、id_rsa.pub、known_hosts。 - anon_swe
是的,但由于您添加了一个https URI作为远程地址,因此SSH设置将不会被使用,因为它们不适用于https。 - Jörn Hees
那我是不是应该把URI中的“https”去掉? - anon_swe

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