web-dev-qa-db-ja.com

Gilabエラーを修正しました:「このプロジェクトの保護されたブランチにコードをプッシュすることは許可されていません」

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

エラーメッセージ:

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

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

GitLabではいくつかのブランチを保護することができます。デフォルトではMaintainer/Ownerユーザだけが保護されたブランチにコミットできます( パーミッションdocs を見てください)。 masterブランチはデフォルトで保護されています - メインのコードに統合する前にプロジェクトメンテナによって検証されるマージリクエストを発行するよう開発者に強制します。

プロジェクト設定で選択したブランチの保護を有効または無効にすることができます(GitLabのバージョンによって異なります。下記の説明を参照)。

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

GitLab 9.3以降

プロジェクトに移動します。[設定]→[リポジトリ]→[保護されたブランチ]の[展開]

enter image description here

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

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

GitLab 9.0以降

GitLab 9.3と同じですが、「展開」をクリックする必要はありません - すべてはすでに展開されています。

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

enter image description here

GitLab 9.0より前

プロジェクト: "設定"→ "保護された枝"(あなたが少なくとも与えられたプロジェクトの 'マスター'である場合)。

Settings → Protected branches

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

enter image description here

405
Hcorg

gitLab Enterprise Edition 9.3.0用

デフォルトでは、マスターブランチは保護されているので保護されていません:)

1 - あなたは "プロジェクト"を選択

2 - 「リポジトリ」を選択

「支店」を3つ選択

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

5-In "Protected Branches"をクリックして "展開"

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

19
krekto

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

1
Vahid F

リンクに従って変更してみてください

https://docs.gitlab.com/ee/user/project/protected_branches.html

あなたがコミットするように、プロジェクトをメンテナまたは開発者のために保護しないようにしてください

1

私は自分のリポジトリで同じ問題を経験しました。私はリポジトリのマスターですが、私はそのような誤りがありました。

私は自分のプロジェクトの保護を解除した後、再度保護し直しましたが、エラーはなくなりました。

以前のPushと問題のあるものの間でgitlabのバージョンをアップグレードしました。今回のアップグレードでバグが発生したと思います。

0

上記の解決策は、問題が何であるかを明確に説明しています。リポジトリを管理できない場合は、元のリポジトリのフォークを作成してこの新しいリポジトリにコードを送信するのが最善の方法です。後で元のリポジトリにプッシュできます。

0
spicyramen