kiyoのアウトプットのたまり場

主にプログラミングの学習のアウトプットをします。

git-flowとGitHub Flowの違い

git-flow,GitHub Flowは「Git/GitHubのワークフロー」であり、厳密な規則ではない。 開発規模や人数によって適切なワークフローを用いることで、複数人でのバージョン管理システムの運用を円滑にすることができる。

git-flow

「git-flow」はVincent Driessen氏の「A successful Git branching model」を基にしたワークフロー。 他のワークフローと比べると大規模で複雑な構成になっている。 開発者が4人以上の場合に適している。

ブランチの種類と用途

メインブランチ

メインブランチには「master」「develop」の2つのブランチがある。 これらのブランチは常に存在する。

  • master(main)

リリース済みのソースコードを管理する

  • develop

開発中のソースコードを管理する

サポートブランチ

タスクごとに「feature」「release」「hotfix」のいずれかのブランチを作成し、作業を行う。

  • feature 機能実装や開発作業を行う

  • release リリース準備作業を行う

  • hotfix 緊急の修正やバグ修正を行う

開発フローの例

at-it-git-15-002.jpg 1,developブランチを作成 master(main)ブランチからdevelopブランチを作成

2,機能を実装する developブランチから、featureブランチを作成 機能実装後、コミットはfeatureブランチに対して行う

3,機能実装を完了する featureブランチでの作業が完了したら、featureブランチをdevelopブランチにマージする マージ完了後にfeatureブランチを削除する

4,リリース準備を始める 機能実装が終わりリリースできる状態になったら、developブランチからreleaseブランチを作成する

5,リリース準備を完了する リリースブランチでの作業が完了したら、releaseブランチをmasterとdevelopブランチにマージする マージ完了後にreleaseブランチを削除

6,緊急の修正作業を開始する リリース後に緊急の修正作業が発生した場合は、masterブランチからhotfixブランチを作成し、修正作業を行う マージ完了後にhotfixブランチを削除する

GitHub Flow

GitHub Flow」は「GitHub」の開発で使用されているワークフローであり、「git-flow」に比べてシンプルな構成になっている。

開発人数が1~3人で1日に複数回デプロイを行うようなWebアプリケーションの開発に適している。

6つのルール

  • masterブランチは常にデプロイ可能である
  • 作業用ブランチをmasterから作成する
  • 作業用ブランチを定期的にプッシュする
  • プルリクエストを活用する
  • プルリクエストが承認されたらmasterへマージする
  • masterへのマージが完了したら直ちにデプロイを行う

開発フローの例

at-it-git-15-009.jpg 1,開発作業を行う GitHub Flowでは、全てのブランチをmasterブランチから作成する ブランチ名は、何の作業を行っているかが分かる名前にする。また、作業用ブランチは定期的にリモートリポジトリにプッシュするようにする。これによって、他の開発者の作業状況を把握できるようになる

2,Pull Requestを行う 作業用ブランチをmasterブランチへマージできる状態になったら、プルリクエストを作成して他の開発者にコードレビューを依頼する。そして、プルリクエストが承認されたらmasterへマージする

GitHub Flowを使用した開発では、プルリクエストを積極的に活用する。作業完了後のコードレビューだけではなく、作業途中の実装への助言を求める場合などにも使える

3,デプロイする masterへのマージが完了したら直ちにデプロイを行う

まとめ

git-flowは4人以上での開発の際に用いる GitHub Flowは1~3人での開発に用いる マージの際はPull Requestをする(GitHub Flowの場合は作業途中でも有用なため積極的にする)

  • master(main)・・・ユーザーが使う製品
  • hotfix・・・バグ修正用ブランチ、masterからクローンしてくる
  • release・・・リリース用
  • develop・・・featureブランチの集まり
  • feature・・・作業ブランチ

参考

https://www.atmarkit.co.jp/ait/articles/1708/01/news015.html#02