我遇到了一个奇怪的问题,我使用我的凭据克隆了一个存储库([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
我该怎么办?这神秘的谜团背后究竟有何原因?
答案1
我可以使用此 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
答案2
在我的案例中,GitLab 上的项目有一个提交者限制。“用户只能将使用他们自己经过验证的电子邮件之一提交的提交推送到此存储库。”由于我也为我的机器配置了 SSH,所以我的用户电子邮件在 git 全局文件中更新为我的机器地址,因此远程不允许推送。
您可以在 gitlab->设置->存储库->推送规则中找到它;只需禁用此提交限制,它就会起作用。
答案3
git commit --amend --reset-author --no-edit
仅在最后一次提交中更改作者,如果您有多次提交,您仍然无法推送。
使用 检查它git log
,并使用不正确的作者重置每个提交并再次提交。