无法推送到 git:git 出于某种原因认为我是其他用户

Can not push to git: git considers me to be other user for some reason

当我 git clone 来自 github 的回购时 - 一切正常。回购已下载,但当我尝试将更改推送到回购时,git 说:

ERROR: Permission to my_user_name/repo_name.git denied to other_user_name.
fatal: Could not read from remote repository.

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

所以我尝试推送到我的存储库,但 github 认为我是其他用户。这是怎么发生的? (那个人属于我的团队——我们一起做几个项目)。以及如何解决这个问题?

当我执行 ssh -T -ai ~/.ssh/id_rsa git@github.com 时 - 它说 other_user_name 已获得授权,而不是我!但是当我做 ssh -T -ai ~/.ssh/id_rsa git@bitbucket.com - 它告诉我的名字。这怎么可能?

您需要在 github.com 上的 您的 github 帐户中添加系统的 ssh 密钥。

这可能意味着您的用户配置文件中有一个属于另一个用户的 SSH 密钥。 一种方法(不是最佳解决方案)是使用 git 克隆和 http:// url 而不是存储库的 git:// url。 这应该使您能够不受限制地推送(但 git 会要求您输入用户名和密码)。

然后当这可行时,您可能会启用 ssh 身份验证。 为此,您可以关注 github's guide to ssh key authentication

P.S : 要将本地存储库 url 从 http 更改为 ssh,反之亦然,请参阅此 github's guide

假设您使用 SSH 而不是 HTTPS 进行身份验证。您可能最好使用 HTTPS 身份验证....

我要补充一点,您需要确保两端都设置为私有。 如果由于某种原因你从 public 帐户推送,这是当项目被列为私有时给出的响应。如果两者都是 public,那么任何人都可以 post 参与项目。 另外,检查您的权限。 您可能已重置为 'read only'。 没有写权限,您不能推送更新或新代码。

另一种选择是分叉你的修复程序并让你的合作伙伴提取并检查它。

就个人而言,我更喜欢 Subversion。

看来我找到问题的根源了

为了将一个应用程序部署到生产环境,我们使用 ansible 和单独的 ssh-key 连接到服务器。事实证明,该部署密钥是我们团队一名成员的密钥。因此,部署后该密钥仍保留在我的系统中,导致推送到 github 时出现问题,导致 github 选择了它找到的第一个密钥。

为了删除所有密钥,我只需要 运行 ssh-add -D。之后登录 github 并使用我自己的默认 ssh-key 完成 bitbucket