自分の資格情報 ( ) を使用してリポジトリをクローンしたときに、奇妙な問題が発生しました[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 グローバル ファイルで自分のマシンのアドレスに更新され、リモートで PUSH が許可されませんでした。
これは、gitlab -> 設定 -> リポジトリ -> プッシュ ルールで見つけることができます。このコミット制限を無効にするだけで機能します。
答え3
git commit --amend --reset-author --no-edit
最後のコミットで作成者のみが変更されます。複数のコミットがある場合は、プッシュできません。
で確認しgit log
、不適切な作成者によるすべてのコミットをリセットして再度コミットします。