プロジェクトで開発者アクセス権を持っているときにコードを Git にプッシュすると問題が発生しますが、マスターアクセス権を持っているときは問題ありません。この問題はどこから来ているのでしょうか? また、どのように修正すればよいのでしょうか?
エラーメッセージ:
エラー: このプロジェクトの保護されたブランチにコードをプッシュすることは許可されていません。...
エラー
: 一部の参照をプッシュできませんでした...
ベストアンサー1
問題はありません。すべてが期待どおりに動作します。
GitLabでは、いくつかのブランチを保護することができます。デフォルトでは、メンテナー/オーナーユーザーのみが保護されたブランチにコミットできます(権限ドキュメント)master
ブランチはデフォルトで保護されており、開発者はマージ リクエストを発行して、メイン コードに統合する前にプロジェクト管理者による検証を受ける必要があります。
プロジェクト設定で、選択したブランチの保護をオンまたはオフにすることができます (正確な場所は GitLab のバージョンによって異なります - 以下の手順を参照してください)。
同じ設定ページで、開発者が保護されたブランチにプッシュできるようにすることもできます。この設定をオンにすると、保護はgit push --force
リベースなどを必要とする操作の拒否に限定されます。
GitLab 9.3以降
プロジェクトに移動:「設定」→「リポジトリ」→「保護されたブランチ」の「展開」
この変更がいつ導入されたのかはよくわかりません。スクリーンショットはバージョン 10.3 のものです。
ここで、選択したブランチにマージまたはプッシュできるユーザーを選択できます (たとえば、プッシュをmaster
すべてオフにして、ブランチへのすべての変更をマージ リクエスト経由で行うように強制できます)。または、[保護解除] をクリックして、ブランチから保護を完全に削除することもできます。
GitLab 9.0以降
GitLab 9.3 と同様ですが、「展開」をクリックする必要はありません。すべてがすでに展開されています。
プロジェクトに移動します:「設定」→「リポジトリ」→「保護されたブランチ」まで下にスクロールします。
GitLab 9.0 以前
プロジェクト: 「設定」→「保護されたブランチ」(特定のプロジェクトの「マスター」以上の権限を持っている場合)。
次に、「保護を解除」または「開発者がプッシュできる」をクリックします。