【问题标题】:Git push error: does not match your user accountGit推送错误:与您的用户帐户不匹配
【发布时间】:2022-01-30 05:46:02
【问题描述】:

我执行了以下命令:

git pull <partner_remote> <partner_branch>
git config user.email <my_email>
git config user.name <my_name>
git commit --amend --reset-author
git push <my_remote> HEAD:refs/for/<my_branch>

但是“git push”之后出现如下错误:

remote: ERROR:  In commit b6b74fff7850c4b61a5535519959b1ab58ca6fa9
remote: ERROR:  committer email address aaa@aaa
remote: ERROR:  does not match your user account.
remote: ERROR:
remote: ERROR:  The following addresses are currently registered:
remote: ERROR:    bbb@bbb
remote: ERROR:
remote: ERROR:  To register an email address, please visit:
remote: ERROR:  http://xxxxxxxx

我不知道如何解决它。

【问题讨论】:

  • 您或其他人最近是否更改了您的 Git 帐户中的元数据?
  • 不行,我的账号只有我可以使用,其他人不能使用我的账号。
  • 上面的 Git 命令(以git pull...开头)是在错误之前还是之后运行的?如果之后,那么问题很可能是您更改了用户凭据,并且 repo 主机不喜欢它。
  • Git 命令在错误之前运行。
  • 您为什么要更改您的信息?这可能会导致您的 Git 历史记录出现问题,从而难以跟踪您以前的工作。

标签: git gerrit


【解决方案1】:

您可以运行以下命令:

git config --global user.name "Your Name"
git config --global user.email you@example.com

然后运行这个来编辑提交以重置作者:

git commit --amend --reset-author

【讨论】:

  • 是的,首先要做的是检查您尝试推送的提交中的作者信息,这很容易忽略!
【解决方案2】:

此外,当您尝试提交其他人的更改时,可能会遇到同样的错误。在我的团队中,这是一个很常见的用例,当 John 有一个提交正在审查时,但 John 去度假\病假\休息日,并且出现了一些反馈。因此,如果提交必须尽快合并,则需要进行一些更改。 Gerrit 允许您检查任何人的提交、进行更改并将其作为新的补丁集上传。原作者(John)仍将是“作者”,但您将是“提交者”。

这只是对案件的简要描述,现在回到问题上来。在我的团队中,我们设置了 Gerrit 配置,因此默认情况下“提交者”没有 Forge Author\Forge Committer 权限,因此在尝试上传新补丁集时,您将遇到问题中提到的相同错误。

解决方案是在您的 gerrit 项目中要求更高的角色(维护者、开发者或管理员)

作为一种替代方法,可以强制覆盖提交的作者:

git commit --amend --reset-author

【讨论】:

    【解决方案3】:

    如果我理解正确的话,(aaa@aaa) 不同于在 Gerrit 中注册的 bbb@bbb 电子邮件,对吧?所以...检查 aaa@aaa 是否是您的正确电子邮件并在 Gerrit 中注册:

    1. 转到 Gerrit
    2. 点击“你的名字”(右上角)
    3. 点击“设置”
    4. 点击“联系方式”
    5. 点击“注册新电子邮件...”
    6. 用 aaa@aaa 填写字段并点击“注册”

    您将收到一封“[Gerrit Code Review] 电子邮件验证”电子邮件,按照说明将 aaa@aaa 电子邮件地址添加到您的用户帐户。

    【讨论】:

    • 问题是操作可能无法访问 aaa@aaa 电子邮件地址。这是从哪里来的以及如何改变它?
    【解决方案4】:

    这是由于 git credential-manager 存储了以前的登录凭据。

    这里是修复,只需执行:

    git credential-manager clear <gerrit url>
    

    例如:git credential-manager clear https://mygerrit.com

    如果你再次推送或克隆,它会提示输入用户名和密码

    【讨论】:

      【解决方案5】:

      转到 Gerrit -> 设置 -> HTTP 凭据,按照指南步骤完成以下选项: 获取密码(在新选项卡中打开)

      【讨论】:

        【解决方案6】:

        对我来说,问题是我使用的是 Cygwin,并且不知何故错误的凭据存储在 Cygwin 文件夹内的 .git-credential 文件中。

        位置:cygwin/home//.git-credential

        改正了,之后效果很好。

        【讨论】:

          【解决方案7】:

          另一个简单的解决方案是打开终端

          git config --global --edit
          

          并更新电子邮件地址以匹配 Gerri 帐户电子邮件地址

          【讨论】:

            猜你喜欢
            • 2015-04-11
            • 2014-12-12
            • 2014-03-04
            • 1970-01-01
            • 2017-02-28
            • 2018-05-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多