【问题标题】:Force change in commiter's email强制更改提交者的电子邮件
【发布时间】:2019-01-09 10:45:57
【问题描述】:

我使用错误的电子邮件“email@gmail.com”进行了提交,当我尝试推送提交时,由于以下原因失败了

远程:GitLab:提交者的电子邮件“email@gmail.com”不遵循模式“@company.fr$”

到 gitlab.com:xxxxxx.git ! [remote denied] xxxx -> xxxx (pre-receive hook denied)

错误:未能将一些引用推送到“xxxxx”

我使用以下命令强制更改了提交的电子邮件:

git commit --amend --reset-author

我将邮箱地址强制更改为正确的地址“email@company.fr”,日志显示更改已经生效

但是当我尝试推送(使用--force)提交时,我仍然遇到上述相同的错误。

如果您知道为什么它不起作用以及我可以如何强制它,我很乐意欢迎它

谢谢

【问题讨论】:

  • 如果第一次推送被拒绝,你不应该在第二次推送时需要--force,因为上游存储库永远不会获得你为了支持更正的提交而推到一边的提交。如果您向不正确的作者提交了 两个或更多 次提交,并且此 git push 正在尝试推送 所有 个,则可能会发生此特定错误。也就是说,您已经修复了至少两个提交链中的最后一个提交,至少有一个仍然不正确。这可能吗?

标签: git gitlab


【解决方案1】:

我也看到了 Bitbucket 的这个问题,我也不知道为什么会发生(它不应该基于我的理解)。我发现有效的是在 Git 中本地更正用户电子邮件配置文件,然后重新提交。请尝试以下操作:

# from your feature branch
git branch backup                         # create backup branch
git reset --hard HEAD~1                   # remove the problem commit
git cherry-pick <SHA-1 of HEAD of backup> # cherry-pick back the commit
git push origin feature

当您选择收回您的提交时,您实际上是在创建一个全新的提交,并且第一次使用正确的电子邮件地址。我已经看到这种方法适用于 Bitbucket,值得尝试使用 Gitlab。

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2016-04-23
    • 2018-11-21
    • 2014-11-14
    • 2012-01-12
    相关资源
    最近更新 更多