ブログ オープンソース GitFlowとは?GitLab Flowとの違いと開発フローを解説
公開:September 27, 2024
1分で読めます

GitFlowとは?GitLab Flowとの違いと開発フローを解説

GitFlowとGitLab Flowの違いや、GitFlowとは何なのか、GitFlowの仕組みや使うメリット、よくある質問などをご紹介します。

AdobeStock 662057734

GitFlow では、開発者は「main」(運用)ブランチの他に「develop」(開発)ブランチを分けて作成しそれをデフォルトにしますが、GitLab Flowmainブランチでもすぐ作業を始められます。GitLab Flowにはプリプロダクションのブランチが組み込まれており、main ブランチに変更点をマージして本番環境に移行する前にバグ修正を行うことができます。たとえば、mainからテストへ、テストから承認へ、または、承認からプロダクションへ、といったように、チームは必要に応じてプリプロダクションブランチを好きなだけ追加できます。

ここでは、GitFlowとGitLab Flowの違いや、GitFlowとは何なのか、GitFlowの仕組みやこれを使うメリット、よくある質問などをわかりやすく説明します。

目次

  • GitFlowとは
  • GitFlowの仕組み
  • GitFlowと GitLab Flow はどう違うのか
  • GitFlowのワークフロー
  • GitLab Flowのワークフロー
  • GitFlowを使うメリットと各種機能
  • GitFlowの例
  • GitLab FlowとGitFlowのFAQ(よくある質問)

GitFlowとは

GitFlowとは、Git(分散型バージョン管理システム)ブランチを管理するGitワークフローのことで、Gitでのリポジトリの分岐(ブランチ)モデルです。複雑なソフトウェアリリース管理を簡素化するためにつくられ、Vincent Driessen氏によって2010年に利用が始まりました。規模の大きなチームの間で、特に人気があります。

GitFlowの仕組み

トランクベース開発と比較すると、GitFlowには永続的なブランチと大規模なコミットがあります。GitFlowは、リリースの周期が決まっているプロジェクトと、継続的なデリバリーを行なう DevOpsベストプラクティスに利用できます。 GitFlowではワークフローが構造化されているため、たとえば、developブランチとmainブランチにfeatureブランチを追加し、次いでreleaseブランチを追加するなどして各ブランチを定義します。こうすると、チームがその構造を理解しやすく、変更点などを開発パイプラインのどこに加えるべきなのか、一目瞭然となります。

GitFlowとGitLab Flowはどう違うのか

GitFlowとは、Gitのブランチングモデルで、フィーチャーブランチの他に、複数の主要ブランチを使用します。GitLab Flowは、GitFlowが内包していた問題を解決し、チームメンバーがより効率よく作業できるようにしています。詳しいワークフローの違いを見てみましょう。

GitFlowのワークフロー

GitFlowのワークフローには、次の5つのブランチがあります。

  1. main
  2. develop
  3. feature
  4. release
  5. hotfix

GitFlowをコード開発で使用するときは、mainブランチとそれ以外のサポートブランチを使用します。メインブランチには、製品としてリリースするためのmainブランチと、開発中のソースコードを管理するdevelopブランチの2つのブランチがあります。developブランチでコードの安定化を図り、リリースの準備ができたらmainブランチにマージします。サポートブランチには、feature、release、hotfixなどのブランチを作成し、それぞれの作業を進めます。

GitLab Flow のワークフロー

GitLab Flowは、リリース、タグ付け、マージなどで発生するオーバーヘッドを防ぎ、開発を効率化します。

GitLab FlowはGitFlowを簡略化したもので、フィーチャー中心の開発と、イシュー追跡機能を組み合わせたものです。GitLab Flowを使うと、シンプルで、わかりやすく、かつ効率的な作業が可能になります。GitLab Flowには、ソフトウェア開発チームがスムーズに機能をリリースするための、ベストプラクティスが含まれています。

GitLab FlowはGitLabの開発で使用するワークフローで、メインのブランチである main、リリース前のテスト用ブランチである pre-production、リリース済みのコードを管理するproduction、機能の開発やバグ修正用feature/hotfixなどのブランチがあります。チームは、好きな数だけプリプロダクションブランチを追加できます。たとえば、main からテストに、テストから承認に、承認からプロダクションに、といったように流れをつくります。

チームはフィーチャーブランチを作成する一方で、プロダクションブランチを管理します。メインブランチのデプロイ準備が整ったら、それをプロダクションブランチにマージし、リリースします。GitLab Flowはリリースブランチでも使用できます。パブリックのAPIが必要なチームは異なるバージョンを管理しなければなりませんが、GitLab Flowを使うと個別に管理可能なv1ブランチとv2ブランチを作成できるため、コードレビューでバグを検出した場合にv1に戻れ、とても便利です。

GitFlowを使うメリットと各種機能

メリット1: バグ修正を迅速に処理

GitFlowを使うメリットのひとつは、本番環境でのバグ修正が素早く処理できる点です。GitFlowは規模の大きなチームで複雑なソフトウェア開発を行なう際に、Git(分散型バージョン管理システム)のワークフローとして利用します。

メリット2: テストを保証

リリースブランチからソフトウェアをリリースするときは、ユーザーがステージング環境でテストできる期間を設定できます。これはコード開発とは独立して行なえます。また、コミットは下流側に流れるので、すべての環境でテスト済みであることが保証できます。

メリット3: ソフトウェア開発プロセスの効率化

GitFlowを使うと、Gitが最大限に活用できます。それにより、ソフトウェア開発プロセスの効率化が図れます。

メリット4: より効率的なコラボレーション、コンフリクトの解決、継続的なデリバリー

GitFlow を導入することで、コラボレーションが効率化できます。マージのコンフリクトも素早く解決でき、継続的なデリバリーが実現します。

GitFlowの例

以下に、GitFlowの構成例を図で示します。フロー全体と、それぞれの分岐や構造などがおわかりになるかと思います。

AdobeStock 569852816

GitLab FlowとGitFlowのFAQ(よくある質問)

Q: Git Feature Flowとは何ですか。

A: Gitを使った開発フローについて、提唱されているフローのひとつです。シンプルな開発なら Git Feature Flowで対応可能です。

Q: GitLab Flowは、使用するだけの価値がありますか。

A: はい。GitLab Flowはリリース、タグ付け、マージなどのオーバーヘッドを低減します。こういった問題は、他の Gitワークフローでよく出くわす問題です。詳しくは、こちら(英語版)をご覧ください。

Q: GitLab FlowとGit Flow、どちらを選んだらいいですか。

A: Git Flowでは、その構造上、開発ステージが明確に分かれている大型のプロジェクトに向いていますが、GitLab Flowはアジャイルなので、継続的なデリバリーや迅速なリリースを優先するようなプロジェクトに向いています。

参考文献

GitLab のDevSecOpsについて

監修:大井 雄介 @yoi_gl (GitLab合同会社 ソリューションアーキテクト本部 本部長)

今すぐGitLabを始めてみる

Gitやバージョンコントロールについて詳しく知りたい方は、こちらをご覧ください。 統合されたDevSecOpsプラットフォームを使用してチームの可能性の広がりを体感しませんか?

無料トライアルを開始

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成して、ご意見をお聞かせください。 フィードバックをお寄せください

ご利用を開始しますか?

統合されたDevSecOpsプラットフォームによって、チームで実現できることをご確認ください。

無料トライアルを開始

あなたのチームに最適なプランを見つけましょう

価格を確認

GitLabがチームにもたらすメリットについてご覧ください

エキスパートに相談する