目次

    GitHub Flowとは?

    GitHub Flow とは、GitHub社が提唱している簡素化されたGitブランチ戦略です。
    GitHub Flow は、継続的なデプロイを前提としたシンプルなワークフローで、小規模なチームや頻繁なリリースを行うプロジェクトに適しています。

    GitHub Flowの特徴

    GitHub Flowでは、以下の画像ようなブランチ管理を行います。

    git-flow

    前回お話しさせていただいたgit-flowと比べてかなり簡素化された開発フローとなっています。
    以下に、各ブランチの役割を記述致します。
    git-flowと比べて変わらない部分は適宜省略します。

    main

    mainは、リリースされたコードが管理されるブランチです。
    git-flowと役割自体は変わらないですが、hotfixブランチがないのでたまにここでバグ修正をします。
    個人的にはお勧めできないですが。。。

    feature_a,b,c,,,

    featureは、新機能の開発を行うブランチです。
    このブランチで新機能の開発を行い、開発が完了したらmainへマージします。

    運用ルール

    GitHub Flowでは、以下のような運用ルールがあります。

    開発作業が発生する度には常に最新のmainからfeature_a,b,cブランチを作成

    git-flowのように余計なブランチを介する必要は基本的にはなく、mainから直接ブランチを切って作業します。
    バグ修正が発生した場合も同様にfeatureを作成して作業するのが好ましいです。
    ブランチ名称はfeatureであることが分かればなんでもOK!(feature_addSubmitButtonとか、feature_bugfixHomePageとか?)

    featureはdevelopからで動作確認、問題なければプルリクエストを作成

    都度、featureブランチで動作確認を行います。
    問題なければ、プルリクエストを投げてチームにもチェックしてもらいましょう。

    コードレビューとリリース

    チームにコードレビューをしてもらい、大きな問題がなければmainブランチにマージします。
    mainブランチの最新状態を本番環境にデプロイしましょう。

    メリット

    GitHub Flowのメリットは以下のような点があります

    シンプルで分かりやすい

    フローが非常にシンプルで、main ブランチを中心にプルリクエスト(PR)で変更を加えるだけの構成です。
    開発フローを初めて学ぶ人や小規模プロジェクトに適しています。

    継続的デプロイとの相性が良い

    main ブランチが常にデプロイ可能な状態を保つ設計になっています。
    CI/CD(継続的インテグレーション・デリバリー)を導入しやすく、頻繁なリリースが可能です。

    短いリリースサイクル

    新しい機能や修正を素早くリリースすることができます。
    アジャイル開発やスピード重視のプロジェクトに適しています。

    デメリット

    GitHub Flowのデメリットですが以下のような点が挙げられます。

    複雑なリリース管理に不向き

    複数のバージョン(例: LTS と最新リリース)を同時に管理する必要がある場合には対応が難しいです。
    大規模プロジェクトや長期運用プロジェクトでは不便です。

    ロールバックが難しい

    本番環境で問題が発生した際、GitFlow のような専用のリリースブランチがないため、ロールバックが手動になります。
    緊急時の対応が手間になります。

    規模が大きいプロジェクトでは非効率

    大規模チームでは、プルリクエストやマージの競合が頻発する可能性があります。
    作業効率の低下やフローの管理が煩雑になります。

    まとめ

    GitHub Flow はシンプルで使いやすい反面、規模が大きいプロジェクトやリリース管理が複雑なケースでは、
    他のフロー(例:GitLab Flow、GitFlow)を検討した方が適している場合があります。
    プロジェクトの特性やチームのニーズに応じて適切なフローを選択することが重要です。

    参考文献

    PREV
    2024.11.12
    【解説!】普通のWebと違う?!HTMLメールの世界