Table of Contents

GitHubにおける2段階のbranch protection: pushできるユーザーの管理

ownerとcollaboratorだけが直接pushできる(可能性のある)立場にありますが、コード品質とセキュリティを確保するためにルールによって制限されることがほとんどです。pushしようとして「protected branch」というエラーが表示された場合、あなたの権限に関わらず、プロジェクトがPRを要求していることを意味します。

1. アクセスロール(“Permission"を持つのは誰か?)

リポジトリに何かをpushするには、まずWrite Accessが必要です。

  • Repository Owners: デフォルトで完全な制御権を持ちます。
  • Collaborators: “Write"または"Admin"権限が付与されている場合に限り、直接pushできます。

2. Branch Protection(なぜOwnerやCollaboratorでもブロックされる場合があるのか)

多くのプロジェクトでは、mainまたはdevelopブランチは通常「protected」になっています。

Branch Protection Rulesが有効な場合:

  • 直接pushは無効化されています: ownerであっても、GitHubは直接pushを拒否します。
  • PRの必須化: Pull Requestを作成し、自動テストを通過し、多くの場合はコードがマージされる前にピアレビューを受けることが求められます。

まとめ

シナリオ 直接pushできるのは誰? 備考
保護なし Write accessを持つ全員 速いが、本番コードにはリスクがある。
Protected Branch 誰も不可(通常) 全員がPull Requestを使う必要がある。
例外付きのProtection AdminsやSpecific users “Bypass"を許可するルールが設定できる。