GitHub のブランチ運用というと、Git Flow などの完成度の高い手法がまず思い浮かびます。しかし、5〜20名規模の小〜中規模チームでそれらをそのまま導入すると、「ルールは立派だが誰も守れていない」という状態に陥りがちです。
大規模向けフローは、専任のリリース管理者やインフラ担当がいることを前提に設計されており、日々の開発スピードよりも統制を重視しています。一方、小規模チームでは開発・レビュー・リリースを同じメンバーが兼務するケースがほとんどです。
そのため重要なのは、理想的なルールを作ることではなく、「守れる最小ルール」を定義し、それを継続できる状態を作ることです。
本記事では、GitHub を利用する小規模チームを前提に、現場で実際に回るブランチ運用ルールの実践例を解説します。
前提条件|この記事で想定するチーム構成
この記事で紹介する運用は、以下のようなチームを想定しています。
もし大半が当てはまるなら、この運用をベースにして問題ありません。
- 人数:5〜20名程度
- GitHub Team プランを利用
- 専任のインフラ・リリース担当はいない
- 複数案件、または単一の中規模プロダクト
- コードレビュー文化はあるが、全員が Git に精通しているわけではない
この条件下では、「属人化を防ぎつつ、止まらない開発」を最優先にする必要があります。ブランチルールは統制のためのものではなく、事故を防ぐためのガードレールとして考えるのがポイントです。
なぜブランチ運用で事故が起きるのか
多くのチームで起きるトラブルには、共通したパターンがあります。
- main ブランチに直接 push してしまう
- 誰がどの変更を入れたのか追えなくなる
- Pull Request(MR)が形式的になり、実質レビューされていない
- 緊急修正対応で「今回だけ例外」が増え、ルールが崩壊する
これらの問題は、個人のスキル不足というより「ルール設計がチーム規模に合っていない」ことが原因である場合がほとんどです。
失敗パターンを先に共有し、「なぜこのルールが必要なのか」をチーム全員が理解することで、形骸化を防ぎやすくなります。
小規模チームにおすすめのブランチ構成(結論)
基本構成はこれだけ
小規模チームでは、ブランチの種類を増やしすぎないことが最重要です。結論として、以下の 3 種類だけで十分に回せます。
main(本番・リリース用)develop(開発統合用)feature/*(個別作業用)
「release」「hotfix」などを分けたくなる気持ちは分かりますが、まずは運用が定着してから検討すべきです。
ブランチが増えるほど、ルールの理解コストとミスの確率は確実に上がります。
各ブランチの役割と運用ルール
main ブランチの役割
main ブランチは「常にリリース可能な状態」を保つことが絶対条件です。
ここが壊れると、チーム全体の信頼性が一気に下がります。
✅ 運用のポイント
- 直接 push は禁止
- 必ず Merge Request(Pull Request)経由で反映
- 原則として develop からのみマージ
main は「神聖な場所」と位置付け、作業場にはしません。この意識付けだけでも事故率は大きく下がります。
develop ブランチの役割
develop は日常開発の統合先です。feature ブランチで完了した作業は、基本的にここへ集約されます。
✅ 運用のポイント
- feature ブランチのマージ先
- 多少不安定でも許容する
- 定期的に main へまとめて反映
develop を「多少は壊れてもいい場所」と割り切ることで、main の安全性を高く保てます。
feature ブランチの役割
feature ブランチは、個人または小さなタスク単位の作業用です。
✅ 命名例
feature/login-fixfeature/issue-123
重要なのは、作業が終わったら必ず削除することです。
ブランチが残り続けると、「どれが生きているのか分からない」状態になり、管理コストが一気に跳ね上がります。
Merge Request(Pull Request)の最小ルール
必須ルール(これだけ守ればOK)
小規模チームでは、MR のルールも最小限に抑えるのがコツです。
- feature → develop は必ず MR 経由
- 原則 1 人以上がレビュー
- self-merge(自分で承認してマージ)はしない
この 3 つだけでも、コードの可視性と安全性は大きく向上します。
例外ルール(小規模なら許容)
現場では例外も必ず発生します。重要なのは「例外をルールとして明文化しておく」ことです。
⚠️ 許容例
- 緊急対応は Admin がレビュー兼マージ
- 軽微な修正は口頭確認+簡易 MR
「例外=悪」ではありません。想定外を想定しておくことが、運用を長続きさせる秘訣です。
ブランチ保護設定(最低限)
main に設定すること
main には最低限、以下の保護を設定します。
- 直接 push 禁止
- MR 必須
- 管理者でも原則 bypass しない
GitHub のブランチ保護機能を使えば、設定自体は数分で完了します。
develop に設定すること
develop はチームの成熟度に応じて調整します。
- 直接 push 可(チーム方針次第)
- 重要案件のみ MR 必須
すべてを厳しくすると、運用が回らなくなります。「守れる強さ」に抑えるのがポイントです。
権限設計とブランチ運用の関係
ブランチ運用は、GitHub の権限設計と密接に関係します。
- Dev:feature / develop 作業担当
- Review:レビュー専任(必須ではない)
- Admin:ブランチ保護・最終マージ管理
この役割分担を意識するだけで、レビューの責任範囲や判断基準が明確になります。
よくある運用トラブルと回避策
develop が壊れた場合は、直前の安定コミットに戻すか、修正用 feature を即座に切って対応します。
レビューが滞る場合は、MR を小さく保つことが最も効果的です。
feature が長期化した場合は、一度 develop に途中経過をマージする選択肢も検討します。
緊急 hotfix は feature 扱いで作成し、最短ルートで main に反映します。
理想論ではなく、「現場で止まらない」判断を優先してください。
それでも Git Flow を使うべきか?
Git Flow は、リリース頻度が低く、厳密な管理が必要なプロジェクトには向いています。
一方、小規模チームではブランチ数と手順が増えすぎ、運用コストが重くなりがちです。
結論として、小規模チームで無理に Git Flow を採用する必要はありません。必要になったときに、部分的に取り入れれば十分です。
20名規模でのおすすめ最終形(まとめ)
- ブランチは 3 種類まで
- main は神聖、develop は柔軟
- ルールは「破られない強さ」で作る
このバランスが、20 名規模まで最も安定して回ります。
まとめ|ブランチ運用は「文化」になる
ブランチ運用は、単なる技術ルールではなくチーム文化です。
完璧なルールより、続くルールを選ぶことが最優先です。
チームの成長に合わせて、少しずつ進化させていきましょう。
この記事の内容は、Qiita や Zenn、社内 Wiki にそのまま転用できる構成になっています。
次のステップとして、CI や GitHub Actions を組み合わせた自動チェックを導入すると、さらに事故を減らせます

コメント