Skip to content
Latchkey

GitFlow とは?

GitFlow は、長命な main と develop ブランチに加え、補助的な feature、release、hotfix ブランチへと作業を整理するブランチモデルです。

GitFlow は、あらゆる種類の作業にそれぞれ独自のブランチタイプを与える、よく知られたブランチ戦略です。スケジュールされたリリースを持つプロジェクトに構造をもたらしますが、多数の長命なブランチが統合を遅くすることがあります。それを理解することで、その手続きが自分のチームに合うかどうかを判断できます。

GitFlow のブランチ

GitFlow は、リリース済みのコードを保持する恒久的な main ブランチと、継続的な統合のための develop ブランチを使います。feature ブランチは develop から分岐し、release ブランチは出荷前にバージョンを安定させ、hotfix ブランチは main から直接プロダクションをパッチします。各タイプには定義された目的とマージ経路があります。

作業の流れ

feature は develop から分岐し、完了したらマージし戻します。十分な機能が蓄積すると、最終的な安定化のために release ブランチが切られ、その後 main と develop の両方にマージされます。

A GitFlow feature branch
git switch develop
git switch -c feature/reports
# build, then merge back into develop

強みとトレードオフ

GitFlow はあらゆる作業に明確な場所を与えるため、正式なリリースサイクルを持つバージョン管理された製品に適しています。欠点は、長命な develop ブランチと feature ブランチが main から乖離し、統合が重くなることで、これはトランクベース開発とは正反対です。今では多くのチームがより軽量なモデルを好みます。

CI/CD における GitFlow

パイプラインはブランチ構造を映し出します。develop はステージングにデプロイし、release ブランチは拡張された検証を実行し、main はプロダクションにデプロイします。多数のブランチタイプは、より多くのワークフロールールと管理すべきより多くの環境を意味するため、CI 設定はブランチの手続きとともに大きくなります。

GitFlow はあなたに適しているか

  • スケジュールされたリリースやバージョン管理された製品に適しています。
  • 動きの速い Web アプリにはトランクベース開発より重くなります。
  • ブランチごとの CI ルールと複数の環境が必要です。
  • 長命な develop ブランチと feature ブランチの乖離に注意します。

重要なポイント

  • GitFlow は feature、release、hotfix、develop、main ブランチを定義します。
  • スケジュールされたリリースに適していますが、長命ブランチのオーバーヘッドが加わります。
  • CI はブランチタイプを環境にマッピングし、パイプラインの複雑さが増します。

関連ガイド