Git Flow と Trunk-Based の選択肢 Git Flow CI/CD ワークフローに大きな影響を与えることがあります。 Git Flow と Trunk-Based Development (TBD) の違いについて簡単に説明します。
- Git Flow: 式立てられたバージョン管理環境に適しています。
main,develop,feature,release、hotfix、 - 大規模チーム、遅いリリースサイクル、厳格なQAプロセスに適しています。Trunk-Based Development
: シングルメインブランチと短期間の機能ブランチに焦点を当てています。
| 小規模チーム、高速リリース、強力な自動テストに適しています。 | Quick Comparison: | Aspect |
|---|---|---|
| Git Flow | 長期ブランチ | 短期間のブランチ |
| リリースのペース | スケジュールされたリリース | 継続的デプロイ |
| チームのサイズ | 大規模チーム | 小規模から中規模のチーム |
| テスト | サイクル終了時のテスト | 自動テスト |
| デプロイのリスク | ステージングリリースとともに下がる | 頻繁な更新とともに上がる |
| ロールバック | 遅い | 速い |
主なポイント: Git Flow を使用して構造化された、より遅いワークフローと、速度と柔軟性を必要とする TBD を使用します。両方とも、成功するには堅固な CI/CD Pipelines が必要です。
29 - GitFlow とトランクベース開発: …
Git Flow ワークフロー基本

Git Flowは、開発を5つのブランチタイプで組織します: __CAPGO_KEEP_0__, __CAPGO_KEEP_0__, __CAPGO_KEEP_0__, __CAPGO_KEEP_0____CAPGO_KEEP_0__ __CAPGO_KEEP_0__この構造は、リリースと並行開発を効果的に管理するのに役立ちます。
Git Flowブランチ構造
| ブランチタイプ | 目的 | マージ先 |
|---|---|---|
| メイン | codeの本番用を保持する | N/A |
| 開発 | __CAPGO_KEEP_0__の機能を統合する;機能ブランチの基礎となる | N/A |
| 機能 | __CAPGO_KEEP_0__の個々の機能を構築するために使用する;開発から作成 | 開発 |
| リリース | __CAPGO_KEEP_0__の最終テストとバージョニングの準備;開発から作成 | メイン & 開発 |
| 緊急修正 | 生産問題を迅速に修正する; main から作成 | main & develop |
Git Flow の利点
- 複数の機能を同時に開発できるため、競合が生じることなく
- リリースブランチは、最終テストとバージョン準備のための専用スペースを提供し、 develop ブランチは、継続的な作業のために開いておくことができる。
- 緊急修正 ブランチは、生産問題を迅速に修正するために、他の開発タスクに影響を与えることなく、
Git Flow の欠点
- ブランチ管理の複雑さ: __CAPGO_KEEP_0__
- 複数のアクティブなブランチを管理することは、統合が困難になる可能性があります。遅れたデプロイ
- : 正式なリリースプロセスでは、よりシンプルなワークフローと比較して、デプロイメントが遅くなる可能性があります。増加したメンテナンス
: 各ブランチには独自のパイプライン構成が必要であり、これはメンテナンスの負担を増やします。
このワークフローは、厳格なバージョン管理、複数のリリーストラック、規制への準拠が必要なプロジェクトに最適です。次に、トランクベース開発のストリーミングされたアプローチと比較して、これを探します。
トランクベース開発の基本
トランクベース開発 (TBD) は、主に 1 つのメインブランチ、よく「トランク」または「メイン」と呼ばれるものに焦点を当てています。このアプローチは、DevOps の実践と継続的な統合に近いです。
トランクベースブランチ構造
| 一般的なTBDワークフローでは、次のブランチタイプを遭遇します: | ブランチタイプ | Lifespan |
|---|---|---|
| Main/Trunk | 本番用code | Permanent |
| Feature Branches | 個別変更用の短期ブランチ | Short-lived |
| Release Branches | リリース直前の最終調整用 | Temporary |
開発者は、主ブランチに小さな、段階的な変更を定期的にマージする。これにより、継続的なテストが促され、迅速なコンフリクトの解決が可能になる。
Trunk-Based Benefits
TBDはCI/CDとDevOpsのチームにいくつかの利点をもたらします:
- マージコンフリクトが少なくなります: 連続したマージにより、コンフリクトを管理することができます。
- フィードバックが速くなります: 自動ビルドは毎回のマージで実行され、早期にバグを検出します。
- シンプルなパイプライン: 単一のブランチにより、CI/CDのセットアップの複雑さが減ります。
- チームの協力が簡単になります: 共有のトランクにより、全員が一致することが保証されます。
この構造は、Git Flowとの比較を次のセクションで行うための、ストリーミングされたワークフローの準備をします。
トランクベースの制限
TBDには強みがありますが、チームはこれらの課題に対処する必要があります:
| 課題 | 影響 | 対処方法 |
|---|---|---|
| Code 安定性 | 主ブランチに影響を与える変更のリスク | 強力な自動テストを使用 |
| チームの調整 | 重複した作業が混乱を招く | 機能フラグと頻繁な小さなコミットに頼る |
| 学習曲線 | 長期間のブランチから移行する | トレーニングを提供し、段階的に導入する |
| Scaling Issues | 大規模チームでは頻繁なマージがチームを圧倒する | codeの徹底的な検証を強制する |
TBDを成功的に採用するには、チーム内で開かれたコミュニケーションと自動テストが必要です。
Git Flow vs. Trunk-Based: 直接比較
Git FlowとTrunk-Based Developmentの主な違いを以下に示します。
機能比較表
| アスペクト | Git Flow | Trunk-Based Development |
|---|---|---|
| ブランチ複雑さ | 複数の長期間のブランチ | 単一のメインブランチと短期間のブランチ |
| リリースサイクル | スケジュールされたリリース | 継続的デプロイ |
| チームサイズ | 大規模チーム向けに適している | 小規模チーム向けに適している |
| Code レビュー プロセス | ブランチマージ時に形式的なレビュー | 小規模で頻繁な変更の継続的なレビュー |
| テスト要件 | サイクル終了時のテストに焦点を当てる | __CAPGO_KEEP_0__ |
| 学習曲線 | __CAPGO_KEEP_1__ | シンプルなワークフローですが、強力なテストが必要 |
| __CAPGO_KEEP_2__ | 段階的なリリースでリスクが低減 | __CAPGO_KEEP_3__ |
| 頻繁な更新でリスクが高まります | __CAPGO_KEEP_4__ | ロールバックプロセスが遅くなります |
__CAPGO_KEEP_5__
迅速な復旧機能が可能になります __CAPGO_KEEP_0__は、構造化されたバージョン管理されたリリースが必要な大規模なプロジェクト向けに最適です。複数のサポートバージョンを管理するチームや、正式なQAまたはコンプライアンス要件を持つプロジェクトに適しています。
Trunk-Based Development __CAPGO_KEEP_0__は、スピードと柔軟性を優先するチームやプロジェクトに最適です。以下のようなケースに適しています。
- SaaSプラットフォーム向けの迅速な更新
- 強力なCI/CDパイプラインを持つチーム
- 自動テストによって裏付けられたプロジェクト
- 継続的なデプロイワークフローまたは頻繁なリリース
- モバイルアプリプロジェクト向けの定期的な更新
いくつかのチームは、Trunk-Based Developmentをコアサービスに使用し、正式なリリーストラックを持つプロジェクトにGit Flowを使用します。
次のステップ:どちらのアプローチでもCI/CDパイプラインを設定する方法
CI/CDパイプライン設定
Git Flow CI/CD設定
- 開発ブランチパイプライン: 単体テスト、統合テスト、code 品質チェック、ビルド検証、開発環境へのデプロイを実行します。
- リリースブランチパイプライン: フルテストスイートの実行、セキュリティスキャン、リリース候補のビルド、ステージング環境へのデプロイを実行します。
- メインブランチパイプライン: バリデーションテストの実行、バージョニングの処理、プロダクションビルドの作成、プロダクションへのデプロイ、リリースのタグ付けを実行します。
トランクベースCI/CDセットアップ
- : クイック単体テスト、__CAPGO_KEEP_0__ スタイルチェック、ビルド検証、プレビュー環境へのデプロイを実行します。: Focuses on quick unit tests, code style checks, build verification, and deployment to a preview environment.
- : 組み込み自動テスト、セキュリティスキャン、プロダクションビルドの作成、進歩的デプロイ、自動ロールバック機能の実行をカバーします。__CAPGO_KEEP_0__
Capgo CI/CD統合

Capgo を使用して、CI/CD設定のいずれかにライブオーバー・ザ・エアアップデートを追加することができます。
Capgo は GitHub アクション, GitLab CI, Jenkins Git FlowとTrunk-Basedパイプラインの両方で、ライブアップデート、ステージドロールアウト、インスタントロールバックを有効にするには、__CAPGO_KEEP_0__ を使用します。AppleとGoogleの要件を満たし、クラウドと自社ホストの両方の展開に対応しています。 [1].
概要と推奨事項
チームのサイズとCI/CDの成熟度レベルに基づいて、以下の表を使用してワークフローを選択してください。
| シナリオ | Git Flow | Trunk-Based |
|---|---|---|
| チームサイズ | __CAPGO_KEEP_0__ developers | __CAPGO_KEEP_0__ developers |
| リリースサイクル | 毎週または月に | 毎日または複数回 |
| テスト & QA | 伝統的なQAサイクル | 自動テストに焦点を当てる |
| __CAPGO_KEEP_0__ モデル | バージョン管理の伝統的なアプローチ | Cloud-native、コンテナ化された |
| リスク耐性 | 保守的な規制されたセットアップ | 進歩的な迅速なフィードバック |
- 小規模チームでTrunk-Based Developmentを開始し、次に大規模グループに拡大する。CI/CDパイプラインが完全に自動化されるまで移行する前に確認する。
- codeの統一されたレビューを維持し、両方のワークフローで機能フラグを使用する。選択したワークフローに合わせてパイプラインの構成を整合させる。
チームによっては、これらのアプローチを組み合わせるかもしれません - メジャーリリース用にGit Flowを使用し、機能の提供にTrunk-Based Developmentを活用する。どのパスを選択しても、CI/CDの統合、テストの自動化、チームの共通の目標を維持することが成功の鍵です。