Git運用 レッスン1

ブランチ戦略

Git Flow・GitHub Flowなど代表的なブランチ運用モデルと、チームに合った戦略の選び方を学ぶ

なぜブランチ戦略が必要なのか

複数人が同時に開発を進める中で、「いつ・どこで・何を統合するか」のルールがないと、 誰かの未完成な変更が他の人の作業やリリースに混ざってしまいます。 ブランチ戦略は、この統合のタイミングと方法をチームで合意しておく仕組みです。

GitHub Flow / トランクベース開発(現代の主流)

継続的デリバリーを実践する現代のWebサービス開発では、mainブランチを常にリリース可能な状態に保ち、 そこから短命なフィーチャーブランチを切って作業し、レビューを経てすぐにmainへ統合するGitHub Flowトランクベース開発が広く採用されています。

GitHub Flowの基本的な流れ:

1. main から feature/add-checkout のようなブランチを作成する
2. そのブランチで作業し、こまめにコミットする
3. 作業がまとまったらプルリクエストを作成する
4. レビューとCIのチェックが通ったらmainにマージする
5. mainへのマージをトリガーに自動でデプロイする(継続的デリバリー)

ポイント

ブランチの寿命が短いほど、他のブランチとのコンフリクトが起きにくくなります。 「大きな機能を長期間別ブランチで開発し続ける」よりも、 フィーチャーフラグ等を使って小さく分割し頻繁に統合するほうが、現代の実務では好まれます。

Git Flow(伝統的なモデル)

Git Flowは、 main(本番)・develop(開発統合)・feature・release・hotfixという 複数の役割を持つブランチを使い分ける、比較的重厚なモデルです。

Git Flowの主なブランチ:

main     - 本番リリース済みの状態を表す
develop  - 次のリリースに向けた開発の統合先
feature  - developから分岐し、個々の機能を開発する
release  - リリース準備(バージョン確定・最終調整)を行う
hotfix   - 本番で見つかった緊急バグをmainに直接適用し、developにもマージバックする

Git Flowが向くケース

  • • 複数バージョンを同時にサポートするパッケージソフトウェア
  • • リリースサイクルが数週間〜数ヶ月と長い開発
  • • リリース前に明示的な検証フェーズが必要な業務系システム

向かないケース

  • • 1日に何度もデプロイするWebサービス
  • • developとmainの二重管理がコンフリクトの温床になりやすい小〜中規模チーム

Git Flowは決して「古くて使うべきでない」モデルではありませんが、 高頻度デプロイを前提とする現代のSaaS開発では、ブランチの管理コストが メリットを上回ってしまうことが多く、GitHub Flowやトランクベース開発が選ばれる傾向にあります。

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

1

デプロイ頻度を確認する

1日に何度もデプロイするなら、GitHub Flow / トランクベース開発が適している

2

複数バージョンの同時サポートが必要か確認する

古いバージョンにもパッチを当て続ける必要があるなら、releaseブランチの管理が必要になる

3

CI/CDの成熟度を確認する

自動テスト・自動デプロイが整っているほど、短命なブランチでの頻繁な統合がしやすくなる

ポイント

  • • 現代のWebサービス開発では、mainを常にリリース可能に保つGitHub Flow / トランクベース開発が主流
  • • Git Flowはリリースサイクルが長い・複数バージョンを同時サポートする場面で有効な選択肢
  • • ブランチの寿命が短いほどコンフリクトが起きにくい
  • • デプロイ頻度・複数バージョンサポートの要否・CI/CDの成熟度をもとに戦略を選ぶ

確認クイズ

1 / 3

GitHub Flowの基本的な考え方として正しいものはどれか?