我遇到了这个奇怪的问题,我使用我的凭据 ( [email protected]
) 克隆了一个存储库。但我无法推送更改,因为我总是收到此消息:
GitLab: You cannot push commits for '[email protected]' . You can only push commits that were committed with one of your own verified emails.
问题是,当我检查全局和存储库用户时,我发现它是[email protected]
:
全球(以下确认我的正确地址):
git config --global user.email
git config --global user.name
存储库(下面确认我的正确地址):
git config user.email
git config user.name
我该怎么办,这个神秘的谜团背后的原因是什么?
我能够使用这个 git 命令解决同样的问题:
git commit --amend --reset-author --no-edit
我最初尝试使用错误的电子邮件提交,但即使在将 user.name 和 user.email 设置为
git config --global
正确的电子邮件后,我仍然收到上面相同的“您无法为...推送提交”错误。解决方案是在 git 中重置作者 - 然后推送被 Gitlab 接受。
供参考:https ://github.com/git-tips/tips#revert-undo-a-commit-by-creating-a-new-commit
就我而言,GitLab 上的项目存在提交者限制。“用户只能将使用他们自己经过验证的电子邮件之一提交的提交推送到此存储库。” 因为我也在我的机器上配置了 SSH,所以我的用户电子邮件在 git 全局文件中更新了我机器的地址,因此远程不允许 PUSH。
你可以在- gitlab-> settings -> Repository -> Push Rules 找到这个;只需禁用此提交限制即可。
您需要向管理员询问您从中克隆项目的存储库,以从存储库的推送规则中删除提交者限制。请参阅[启用推送规则][1][ https://docs.gitlab.com/ee/push_rules/push_rules.html#enabling-push-rules]。
git commit --amend --reset-author --no-edit
仅在最后一次提交中更改作者,如果您有多次提交,您仍然无法推送。使用 进行检查
git log
,并重置不正确作者的每个提交并再次提交。您可以禁用推送限制,这样您就不需要遍历所有提交并更改电子邮件。