目次
GitHub Flowとは?
GitHub Flow とは、GitHub社が提唱している簡素化されたGitブランチ戦略です。
GitHub Flow は、継続的なデプロイを前提としたシンプルなワークフローで、小規模なチームや頻繁なリリースを行うプロジェクトに適しています。
GitHub Flowの特徴
GitHub 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)を検討した方が適している場合があります。
プロジェクトの特性やチームのニーズに応じて適切なフローを選択することが重要です。
参考文献