まとめ
相違点は大きく分けて下記となります。
- リリース管理: Git-flowはリリース管理に重点を置いており、releaseブランチやhotfixブランチが存在します。GitHub Flowでは、主にmain/masterブランチとfeatureブランチで管理します。
- 使用シーン: Git-flowは大規模なプロジェクトやリリースサイクルが明確なプロジェクトに向いています。GitHub Flowは小規模なプロジェクトや、継続的にデプロイを行うプロジェクトに適しています。
目次
Git-flowとは
Git-flowは主に機能ごとにブランチを使い分けて開発を進めていく手法です。次の6つのブランチを用いて開発していきます。
- master
本番環境のブランチで、リリースするために使う。ここでは直接コミットせず、マージのみ行う。
※masterブランチ上では開発を行わない。 - develop
開発中の主軸となるブランチ。developからfeatureブランチを作成し、そこで作業する。
※developブランチ上では開発を行わない。 - feature
機能の追加や変更、不具合の修正など実際に開発を行うブランチ。作業完了後、developにマージする。 - release
検証環境、もしくはリリース準備用のブランチ。developから作成し、リリースに伴う細かい修正等を行う。
作業完了後、masterブランチとdevelopブランチにマージする。
※releaseブランチがあることで、リリース作業中にもdevelopブランチで並行して開発を進めることができる。 - hotfix
リリース後にバグが発生した場合、修正を行うブランチ。
masterブランチから作成し、作業完了後、masterブランチとdevelopブランチにマージする。 - support
旧版のサポートをするときに用いるブランチ。オプションであり、使わないこともある。
Git-flowのワークフロー
- masterブランチからdevelopブランチを作成し、developブランチからfeatureブランチを作成する。
- featureブランチで開発をする。
- 2.が完了したら、developブランチにマージする。
- developブランチにいくつかのfeatureブランチがマージされたら、developブランチをreleaseブランチにマージし、リリースのための微調整を行う。
- 4.が完了したら、releaseブランチをmasterブランチとdevelopブランチにマージする。
- masterブランチにマージできたら、デプロイを行う。
※バグが発生した場合
- masterブランチから直接hotixブランチを作成する。
- hotfixブランチで修正が完了したら、masterブランチとdevelopブランチにマージする。
- masterブランチにマージできたら、デプロイを行う。
GitHub-flowとは
GitHub Flowは、Git-flowを簡略化したものです。
Git-flowのような決まったブランチ名はありませんが、次のブランチを用いて開発していきます。
- main/master
本番環境のブランチ。常にリリース可能な状態である。 - feature
作業開始時にmasterブランチから作成するブランチ。ブランチ名は、作業内容が分かりやすい名前にする。
GitHub-flowのワークフロー
- masterブランチからブランチを作成し、作業をする。
※作業用ブランチは定期的にプッシュすること。 - 作業が完了したら、プルリクエストを作成し、コードのレビューを依頼する。
- 2.で確認ができたら、masterブランチへマージする。
- masterブランチにマージできたら、デプロイを行う。