Git以错误的用户身份推送到远程GitHub仓库

97

我有一个工作用的GitHub账号和一个个人账号。一开始我使用个人账号进行测试项目,后来我在同一台计算机上使用另一个账号创建了一个存储库。

现在我想要再次在个人账号上创建一个新的存储库,我更改了全局和本地的user.name,生成了一对新的ssh密钥,并输入到GitHub设置页面中。然后我设置了目录。

git init
git remote add origin <url>
git push origin

但现在它告诉我:

错误:对personaluser/newrepo.git的权限被拒绝

我不知道另一个帐户如何与此帐户相关联。.git/config没有显示任何与workusername相关的内容。

如果您使用的是Windows 10,请花点时间阅读Rajan的答案。


2
针对Windows 10,请在下方回答。从凭据管理器中删除凭据。浪费了2个小时的时间。 - xenteros
@xenteros 请将此作为答案发布。我浪费了1小时,而你又帮我节省了1小时。 - lexicore
我真的很希望有人能够发布一个答案,解释git在Linux上是如何知道我的帐户名的,即使据我所知它不在任何配置文件中 - 特别是在哪里发生了信息泄漏? - Jack M
16个回答

2

我遇到了同样的问题。以下是我的情况:

之前,我通过以下方式让git在与远程仓库通信时不再每次都要求我的凭证: git config --global credential.helper wincred

我通过使用"none"替换"wincred"来运行相同的命令解决了这个问题: git config --global credential.helper none

然后git又要求我输入用户名/密码,一切都很顺利。


1
我已经找到了一个临时解决方案,首先运行 killall ssh-agent,然后添加为需要使用的帐户生成的ssh密钥 ssh-add ~/.ssh/id_4shameer 这是我们可以处理多个github帐户的一种方式,当我们遇到类型错误ERROR: Permission to user/repo-git.git denied to username时。

1
我也遇到了这个问题,但其他解决方案都不适用于我。原来我们在工作中创建了一个 .netrc 文件,其中包含 github 认证的条目。git 命令总是使用 .netrc,其中有我的旧用户名和密码。我必须编辑我的 .netrc 文件中的条目,以使用新的用户名和密码。

1

在工作中,我们最近将Macbook连接到Active Directory,并在我的电脑上添加了一些管理员帐户,之前我从未遇到过git的任何问题。然而,在那之后,当我锁定屏幕并回来时,git就会正常工作,但是随后会出现一个类似于的模糊错误:

No user exists for uid 1927040837
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我在这台机器上只有一个ssh密钥,并且在终端中使用zsh。用户电子邮件和名称是正确的,所以这不是问题所在。因此,每次锁定我的机器后重新启动是徒劳的。对我来说,解决方案是编辑我的.zshrc文件并取消注释导出ssh密钥的行(这是我以前从未做过的,而且已经使用zsh多年了)。
该行应该类似于以下内容:
# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

一旦你这样做了,只需在终端中运行reset,一切都会正常工作。

希望这能帮助其他人。


0

重要的部分是您的~/.gitconfig文件中的电子邮件属性。我有两个不同的git帐户(usernameA, email@A.com)(usernameB, email@B.com)。由于某种原因,我的~/.gitconfig文件显示了:

[user]
   email = email@A.com
   name = usernameB

这导致我的提交从帐户A推送。将电子邮件更改为email@B.com解决了问题。


0
我想补充一点 - 如果你正在使用另一个用户的账户,请确保在仓库设置下的协作者区域中添加自己。

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