GitLabエラーを修正:「このプロジェクトの保護されたブランチにコードをプッシュすることはできません」?


327

プロジェクトで開発者アクセス権を持っているときにコードをgitにプッシュすると問題が発生しますが、マスターアクセス権があればすべて問題ありません。問題はどこから来たのですか?そしてそれを修正する方法は?

エラーメッセージ:

エラー:このプロジェクトの保護されたブランチにコードをプッシュすることはできません。
...
エラー:一部の参照を...にプッシュできませんでした


Hcorgの答えは良い解決策です。それには別の問題があります。プロジェクトが作成しただけで、まだブランチがない場合。「保護されたブランチ」をクリックすると、プロジェクトのホームページにリダイレクトされます。ブランチを作成します。
pdwjun

stackoverflow.com/a/61964599/6309とGitLab 13.0(2020年5月)も参照してください。グループレベルのデフォルトのブランチ保護を有効にできます。
VonC

回答:


506

問題ありません-すべてが期待どおりに動作します。

GitLabでは、一部のブランチを保護できます。デフォルトでは、Maintainer / Ownerユーザーのみが保護されたブランチにコミットできます(権限のドキュメントを参照)。masterブランチはデフォルトで保護されています-メインコードに統合する前に、開発者はプロジェクトメンテナーによって検証されるマージリクエストを発行する必要があります。

プロジェクト設定で選択したブランチの保護をオンまたはオフにすることができます(GitLabのバージョンによって異なります-以下の手順を参照してください)。

同じ設定ページで、開発者が保護されたブランチにプッシュすることを許可することもできます。この設定をオンにすると、保護は必要な操作git push --force(リベースなど)の拒否に限定されます

GitLab 9.3以降

プロジェクトに移動:「設定」→「リポジトリ」→「保護されたブランチ」の「展開」

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

この変更がいつ導入されたかはわかりませんが、スクリーンショットは10.3バージョンのものです。

選択したブランチへのマージまたはプッシュを許可するユーザーを選択できるようになりました(たとえばmaster、プッシュをまったくオフにして、ブランチへのすべての変更をマージリクエストで強制的に行うことができます)。または、「保護解除」をクリックして、ブランチから保護を完全に削除できます。

GitLab 9.0以降

GitLab 9.3と同様ですが、[展開]をクリックする必要はありません。すべてが既に展開されています。

プロジェクトに移動します:[設定]→[リポジトリ]→[保護されたブランチ]まで下にスクロールします。

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

GitLab 9.0より前

プロジェクト:「設定」→「保護されたブランチ」(特定のプロジェクトの少なくとも「マスター」である場合)。

設定→保護されたブランチ

次に、「保護解除」または「開発者がプッシュできる」をクリックします。

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


いくつかの権限が必要になる場合があることを忘れないでください。docs.gitlab.com/ee/user/project/protected_branches.htmlに記載されているように、少なくとも「マスター権限レベル」。私の場合、設定ホイールを押すと「Leave Project」オプションのみが表示されます。
CoolMind 2016

1
どういうわけか、突然自分を自分のプロジェクトのマスターユーザーとして追加する必要がありました。
jgillich 2016

3
私は自分のOWNプロジェクトのメンバーではなく、このプロジェクトをすでにプッシュしているため、この問題が発生しました...変更するには、ツアープロジェクトで、歯車をクリックし、メンバー、ユーザーを検索してロールを与え、「追加」をクリックします投影するユーザー」。
Loenix 2016

奇妙なことに、私もgitlab.comの個人プロジェクトに参加しなければなりませんでした
Thomas Decaux

1
あなたが唯一のメンテナまたは開発者である場合は良いので、設定を変更してそれをいじることができます。しかし、レポに取り組んでいるチームがある場合、レポの保護を変更することはお勧めできません。
Mnemo

27

GitLab Enterprise Edition 9.3.0の場合

デフォルトでは、マスターブランチは保護されているため、保護を解除します:)

1-「プロジェクト」を選択します

2-「リポジトリ」を選択します

3-「ブランチ」を選択

4-「プロジェクト設定」を選択します

5-「保護されたブランチ」で「展開」をクリックします

6-「保護解除」ボタンをクリックした後


このリポジトリにはまだファイルを作成していないため、「ブランチ」はありませんでした。Readme.mdを作成し、ブランチが表示されました。
Ikrom 2018

1

私のローカルgitlabサーバーの「空のブランチ」でこのエラーが発生しました。「空っぽの枝を初めて押すことはできない」という人もいました。ブラウザを介してgitlabで簡単なREADMEファイルを作成しようとしました。その後、すべてが驚くほど修正され、問題が解決しました!! 私は主人であり、枝は保護されていなかったと述べました。


これは私には奇妙であり、私はこの問題をgitlabのバグと考えています。空のレポにプッシュする許可がないのは、私には受け入れられません。gitの人たちが答えを出してくれるといいのですが。
Vahid F


1

この問題の簡単な解決策は、gitlabで所有者の役割を持つ人とすばやくチャットすることです。彼は1つのファイルREAD.mdまたは同様のファイルを最初からプッシュすることができます。その後、すべてが以前と同様に機能します。


可能であれば、リポジトリで所有者の役割を取得してみてください。所有者の役割を取得すると、マスターに直接コミットできます。厄介ですが、不要な新しいプロジェクトを作成しないための予防フックです.repoの所有者が最初のファイルをプッシュするか、所有者の役割を持つまで、ハックはありません。お役に立てれば。
kris

1

この問題が発生したのはWindowsでした。

ユーザー名とパスワードを入力する前に発生するため、このエラーは奇妙です。キャッシュまたはこのようなものがあった場合はどうなりますか?私はそれをオンラインで掘って、この答えをgitlabのサポートフォーラムで見つけました:

「コントロールパネル=>ユーザーアカウント=>資格情報の管理=> Windows資格情報」を開きます。https://@github.comに 2つ見つかり、1つは間違ったユーザーでした。私はそれを削除し、次の「git push」で再プロンプトが表示され、正しい資格情報が提供され、機能しました!その他の注意事項-これはgitリモートで発生する可能性があります。

Windows資格情報で、古いアカウントの2つのGitLabエントリを見つけました。私は両方を削除しましたが、うまくいきました!

パネル:

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


@YanickSennどういたしまして。私はこれで多くの時間を失いました。助かります。
aloisdgが

1

これはGitlabの機能と見なされます。

Maintainer / Ownerこのドキュメントに記載されているように、アクセスはデフォルトおよび保護されたブランチに対して再度プッシュを強制することはできません ここに画像の説明を入力してください


1
実際、これはまったく残念なことではありません。それは間違いなく良いことです。これは追加の保護レイヤーです。
ちらみす

0

リポジトリで同じ問題が発生しました。私はリポジトリのマスターですが、そのようなエラーがありました。

プロジェクトの保護を解除してから再度保護しましたが、エラーは発生しません。

以前のプッシュと問題のあるプッシュの間でgitlabバージョンをアップグレードしました。このアップグレードによってバグが発生したと思います。


0

上記のソリューションは問題が何であるかを明確に説明しています。リポジトリを制御できない場合、コードを送信する最良の方法は、元のリポジトリのフォークを作成し、コードをこの新しいリポジトリに送信して、後で元のリポジトリにプッシュできるようにすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.