我遇到了這個奇怪的問題,我用我的憑證克隆了一個儲存庫([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
,並使用不正確的作者重置每個提交並再次提交。