Gitのブランチ戦略とは、チームで「どんなブランチを作り、どのように統合し、どこからリリースするか」を決めたルールです。代表的なものに、Git Flow・GitHub Flow・GitLab Flow・トランクベース開発の4つがあります。

どれが正解というものではなく、リリースの頻度と、同時に管理するバージョンの数で向き不向きが決まります。この記事では、4つの戦略の違いを整理したうえで、チームに合った戦略の選び方、ブランチの保護ルールや命名規則、フィーチャーフラグなど、どの戦略でも役立つ運用の工夫を解説します。

4つのブランチ戦略の比較

Git Flow GitHub Flow GitLab Flow トランクベース開発
主なブランチ main・develop・feature・release・hotfix main・feature main・feature・環境ごとのブランチ(staging・productionなど) main(trunk)と、ごく短命のブランチ
複雑さ 高い 低い 中 低い(ただし運用の成熟度が必要)
リリースの頻度 数週間〜数か月に1回 1日に何回でも 環境ごとに段階的 1日に何回でも
向いている製品 パッケージソフト、スマホアプリ、複数バージョンを保守する製品 Webサービス 検証環境を経てリリースする業務システム 大規模な継続的デプロイ
前提 リリースの準備期間がある mainが常にリリースできる状態 環境ごとの確認の手順がある 自動テストとフィーチャーフラグ

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Gitのブランチ戦略|Git Flow・GitHub Flowの違いと選び方」

Git Flow

main     ●──────────────●──────────●   (リリースされたバージョン)
          \            / \        /
release    \      ●───●   \      /
            \    /         \    /
develop  ●───●──●───●───●───●──●   (開発の最新)
              \     /
feature        ●───●                 (機能ごとのブランチ)
ブランチ 役割 作成元 → 統合先
main リリースされたコード。タグでバージョンを管理 ―
develop 次のリリースに向けた開発の本流 ―
feature/* 機能の開発 develop → develop
release/* リリースの準備(最終確認・軽微な修正) develop → main と develop
hotfix/* 本番の緊急修正 main → main と develop

向いている場面:スマホアプリのようにストアの審査があるもの、パッケージソフト、複数のバージョンを並行して保守する製品など、リリースに準備期間が必要な開発です。

注意点:ブランチの種類が多く、統合の手順も複雑です。Webサービスのように頻繁にリリースする開発では、手間が大きすぎることがあります。Git Flowを提唱した作者自身も、継続的にデリバリーするWebアプリには、よりシンプルな方式を勧めています。

GitHub Flow

main     ●────●────●────●────●   (常にリリースできる状態)
          \       /  \      /
feature    ●──●──●    ●──●──●     (プルリクエストでレビューして統合)
  1. mainからブランチを作る
  2. 作業してコミットし、pushする
  3. プルリクエストを作り、レビューを受ける
  4. CI(自動テスト)が通り、承認されたらmainに統合する
  5. mainに統合したら、すぐにデプロイする

ルールは「mainは常にリリースできる状態に保つ」の1つだけ、と言えるほどシンプルです。

向いている場面:Webサービスや社内ツールなど、いつでもデプロイでき、1つのバージョンだけを運用する開発です。小規模なチームや、個人開発にも向いています。

注意点:mainに統合したものがすぐにリリースされるため、自動テストとレビューの質が前提になります。検証環境で確認してからリリースしたい場合は、次のGitLab Flowの考え方を組み合わせます。

GitLab Flow

GitHub Flowに、環境(検証・本番)ごとのブランチを加えた方式です。

main        ●───●───●───●     (開発の最新・開発環境)
                 \       \
staging           ●───────●   (検証環境)
                   \       \
production          ●───────● (本番環境)

mainに統合したものを、検証環境 → 本番環境の順に、ブランチを進めてリリースします。

向いている場面:業務システムのように、お客様の検証やリリースの承認の手順がある開発です。GitHub Flowの手軽さを保ちながら、段階的なリリースができます。

トランクベース開発

全員が、main(trunk)に、少なくとも1日1回以上、小さな単位で統合する方式です。ブランチを作る場合も、数時間〜1日程度のごく短命なものにします。

未完成の機能は、フィーチャーフラグで隠したままmainに統合します。これにより、長期間のブランチが生まれず、大きなコンフリクトや、統合の直前の混乱を避けられます。

向いている場面:頻繁にデプロイする大規模な開発です。ただし、充実した自動テスト、フィーチャーフラグの仕組み、小さく分けて統合する習慣が前提になるため、導入の難易度は高めです。

チームに合った戦略の選び方

質問 はい → いいえ →
複数のバージョンを並行して保守する必要があるか Git Flow 次へ
ストアの審査など、リリースに準備期間が必要か Git Flow(またはrelease ブランチを追加) 次へ
検証環境でのお客様の確認を経てリリースするか GitLab Flow 次へ
自動テストとフィーチャーフラグが整っているか トランクベース開発 GitHub Flow

迷ったら、GitHub Flowから始めるのがおすすめです。最もシンプルで、必要になったときに、releaseブランチや環境ブランチを追加していけます。最初から複雑な戦略を選ぶと、ルールを守ること自体が負担になりがちです。

どの戦略でも役立つ運用のルール

ブランチの命名規則

種類 例
機能の追加 feature/123-order-csv-export
不具合の修正 fix/456-login-redirect
緊急の修正 hotfix/789-payment-timeout
ドキュメント docs/update-readme

種類/チケット番号-内容の形にすると、ブランチの一覧から、目的と関連するチケットがすぐにわかります。コミットメッセージのプレフィックス(feat・fixなど)と揃えると、さらに統一感が出ます。

ブランチの保護ルール

GitHubやGitLabでは、mainなど重要なブランチに保護ルールを設定できます。

設定 効果
直接のpushを禁止 プルリクエストを経由しないと統合できない
レビューの承認を必須にする 最低1人の承認が必要になる
CIの成功を必須にする テストが失敗したものは統合できない
強制pushを禁止 共有の履歴が書き換えられない
削除を禁止 誤ってブランチを消せない

ルールを人の注意だけで守るのではなく、仕組みで守るのがポイントです。

ブランチは短命に保つ

どの戦略でも、機能ブランチが長く生きるほど、mainとの差が開き、統合時のコンフリクトとレビューの負担が大きくなります。

  • 1つのブランチは、数日以内に統合できる大きさに分ける
  • 大きな機能は、「DBの変更」「API」「画面」のように段階に分けて統合する
  • 長くかかる場合は、mainの変更をこまめに取り込む

フィーチャーフラグ

未完成の機能や、段階的に公開したい機能を、設定で表示・非表示を切り替えられるようにする仕組みです。

if (featureFlags.isEnabled("new-checkout")) {
    showNewCheckout();
} else {
    showOldCheckout();
}
  • 未完成の機能を、隠したままmainに統合できる
  • 一部の利用者だけに先に公開し、問題がなければ全体に広げられる
  • 問題が起きたら、デプロイし直さずにすぐに元に戻せる

使い終わったフラグは、コードから削除することを忘れないようにします。残し続けると、条件分岐が増え、コードが読みにくくなります。

緊急の修正(ホットフィックス)

戦略 緊急の修正の流れ
Git Flow mainからhotfixブランチを作り、修正後にmainとdevelopの両方に統合する
GitHub Flow 通常と同じく、mainからブランチを作り、レビューを経て統合・デプロイする
GitLab Flow mainで修正し、検証・本番のブランチに順に反映する(急ぐ場合は本番へ直接適用する手順も決めておく)

緊急時の手順を、平常時に決めておくことが大切です。慌てているときほど、手順を省いて新たな問題を起こしやすくなります。

AIと一緒に開発するときの運用のコツ

AIのコーディング支援を使うと、短時間で大量のコードが生成されるため、ブランチの運用にも工夫が必要です。

  • 1つの作業を、1つの小さなブランチ・プルリクエストに:AIにまとめて大きな変更をさせると、レビューが追いつかない
  • AIの作業用のブランチを分ける:試行錯誤の結果は、整理してから統合する
  • 保護ルールとCIを必ず設定する:AIが生成したコードも、人のコードと同じくレビューとテストを通す
  • 複数のAIエージェントが並行して作業する場合は、ブランチ(またはgitの作業ディレクトリ)を分け、同じファイルを同時に変更しないように作業を割り振る

よくある質問

Q. developブランチは必要ですか? A. Git Flowでは必要ですが、GitHub Flowでは使いません。頻繁にリリースするWebサービスでは、developとmainの二重管理が負担になることが多く、GitHub Flowの方がシンプルです。

Q. 小規模なチームや個人開発では、どれを使えばいいですか? A. GitHub Flowがおすすめです。個人開発でも、mainを常に動く状態に保ち、作業はブランチで行う習慣をつけておくと、失敗したときに簡単に元に戻せます。

Q. プルリクエストの統合方法(マージ・スカッシュ・リベース)はどれがいいですか? A. チームで1つに統一することが大切です。履歴を1プルリクエスト1コミットに整理したいならスカッシュ、コミットを丁寧に分けて残したいならリベースやマージコミットが向いています。詳しくは、mergeとrebaseの違いの記事で解説しています。

Q. ブランチ戦略を途中で変えてもいいですか? A. 変えて構いません。チームの人数やリリースの方法が変われば、合う戦略も変わります。変更するときは、移行のタイミングと新しいルールをチーム全員で共有します。

まとめ

  • ブランチ戦略は、ブランチの作り方・統合の仕方・リリースの仕方のルール
  • Git Flow:リリースに準備期間がある・複数バージョンを保守する製品向け
  • GitHub Flow:mainを常にリリース可能に保つ、シンプルな方式。迷ったらここから
  • GitLab Flow:環境ごとのブランチで、検証を経て段階的にリリース
  • トランクベース開発:小さく頻繁に統合。自動テストとフィーチャーフラグが前提
  • どの戦略でも、命名規則・保護ルール・短命なブランチが効く
  • AIと開発するときは、小さなプルリクエストとCIで品質を保つ

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Gitのブランチ戦略|Git Flow・GitHub Flowの違いと選び方」

株式会社RJCでは、Gitのようなチーム開発の基本を、実際に手を動かしながら仲間と教え合っています。こうした知識を共有しながら、一緒に成長を楽しんでいます。

株式会社RJC ― SI事業・SES事業・AI駆動開発。未経験からエンジニアに育てるのが得意な会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?