GitLab: のコミットをプッシュすることはできません。プッシュできるのは、自分の認証済みメール アドレスでコミットされたコミットのみです。

GitLab: のコミットをプッシュすることはできません。プッシュできるのは、自分の認証済みメール アドレスでコミットされたコミットのみです。

自分の資格情報 ( ) を使用してリポジトリをクローンしたときに、奇妙な問題が発生しました[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、不適切な作成者によるすべてのコミットをリセットして再度コミットします。

答え4

すべてのコミットを確認してメールを変更する必要がないように、プッシュ制限を無効にすることができます。

ここに画像の説明を入力してください

関連情報