web-dev-qa-db-ja.com

GitHubでマスターにプッシュしないようにしますか?

GitHubを使用すると、リポジトリを構成して、 ユーザーがプッシュをマスターに強制できない を使用できますが、マスターへのプッシュを完全に防ぐ方法はありますか?マスターへのコミットに追加する唯一の方法がGitHubプルリクエストUIを介して行われるようにしたいと思っています。

20
joshlf

元の質問/回答以来、Githubは制限付きブランチUIにこれを設定できる新しいオプションを追加しました。

マージ前にプルリクエストのレビューが必要有効になっている場合、すべてのコミットは保護されていないブランチに対して行われ、必要な数の承認レビューを含むプルリクエストを介して送信する必要があります。このルールに一致するブランチ。

1
Cory

ブランチの制限を有効にする で、誰が(組織のユーザーとチームに関して)プッシュを許可されるかを決定できます。

https://help.github.com/articles/about-branch-restrictions/

"注:[管理者を含める]がオンになっていて、ブランチで必要なステータスチェックを有効にすると失敗した場合、ユーザーまたはチームの権限ステータスに関係なく、ベースブランチへの変更のプッシュも失敗します。

4
phd

現在受け入れられている答えは実際には正しいですが、あなたが組織の所有者であるか、管理者権限を持っている場合(リポジトリを作成した場合など)、保護されたブランチにプッシュできます。 https://help.github.com/en/articles/about-branch-restrictions のGithubドキュメントから:

組織の所有者とリポジトリの管理者権限を持つユーザーは、常に保護されたブランチにプッシュできます。

他のタイプの共同編集者の場合は、git Pushは失敗します。

Qt allのプッシュを本当に無効にしたい場合は、前述のようにブランチに対して無効なpushRemoteを設定することにより、ローカルでセットアップする必要があります。

git config branch.master.pushRemote no_Push

または、次のように事前プッシュフックを設定できます。 https://Gist.github.com/vlucas/8009a5edadf8d0ff74

1
Ignacio Arces

ステータスチェック が有効な場合、リモートのマスターへの直接プッシュは拒否されます。つまり、リモートのマスターにコミットを追加する唯一の方法は、GitHubでプルリクエスト(ステータスチェックに合格)をマージすることです。

ステータスチェックを必要とするマスターブランチの実験結果は次のとおりです。

  1. PCのmasterブランチでコミットを作成します。
  2. リモートのマスターにプッシュします。
  3. 拒否メッセージが表示されます。コミットは最終的にリモートにプッシュされません。
C:\GitRepo\GitHub\TomoyukiAota\photo-location-map [master ↑1]> git Push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 305 bytes | 305.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: 3 of 3 required status checks are expected.
To https://github.com/TomoyukiAota/photo-location-map.git
 ! [remote rejected] master -> master (protected branch hook declined)
error: failed to Push some refs to 'https://github.com/TomoyukiAota/photo-location-map.git'
C:\GitRepo\GitHub\TomoyukiAota\photo-location-map [master ↑1]>
0
Tomoyuki Aota