git-flowを用いた開発フロー


ターゲット

・Gitを学び始めた駆け出しエンジニアの方
・Gitブランチングってなに?って方
・git-flowを勉強する必要がある方

はじめに

Gitとは、ソフトウェア開発をするエンジニアにとって、必要不可欠のバージョン管理システムです。

参考:
Git公式ドキュメント(日本語版)
【絶対理解できる】Gitとは?特徴やできることまとめ!
【Git入門】ブランチ(branch)とは?メリットや使い方を解説!

しかし、チーム開発をする際には特にブランチの運用ルールを定める必要があります。
ルールなしに運用すると、チームメンバーがそれぞれ無秩序に開発を進めリポジトリの整合性が取れなくなり、開発が止まってしまいます。

この問題に対処するために考え出されたのがブランチモデルです。
Gitのブランチモデルには、
・git-flow
・GitHub Flow
・GitLab Flow
・GitFeature Flow
など数種類存在します。

今回はその中でも、git-flowについて紹介します。

git-flowとは?

git-flowは、オランダのエンジニアVincent Driessen氏が提唱した「A successful Git branching model」というブランチモデルを導入するためのプラグインです。

参考:
git-flow cheatsheet(日本語版)
git-flowには5種類のブランチがあります。

・masterブランチ
直接コミットせず、マージを行うだけのブランチ。
・developブランチ
開発の中心となるブランチ。masterブランチから切る。masterブランチ同様、直接コミットせず、developブランチから切ったfeatureブランチをマージしていく。
・featureブランチ
実際に各機能を開発するブランチ。developブランチから切り、作業が終わったらdevelopブランチにマージする。基本的にはマージ完了後に削除する。
・releaseブランチ
ソフトウェアをリリースするために使うブランチ。developブランチから切り、ここではリリース作業のみを行う。
・hotfixブランチ
ソフトウェアのリリース時に発覚した緊急の不具合を修正するためのブランチ。masterブランチから切る。

git-flowの開発フロー

1. git-flowインストール(Mac)
Homebrewでパッケージをインストール。

brew install git-flow

・インストール参考(Windows、Linux)
git-flowのインストールとブランチ運用前のリポジトリ準備 (1/2)

2. ローカルリポジトリの初期化

$ git flow init

3. ブランチの状況を確認

$ git branch
結果
* develop
  master

4. featureブランチを切る
ここでは「sample」というブランチ名にする。developブランチから切られる。

$ git flow feature start sample

5. 作成したfeatureブランチ(sample)上で開発する

6. 開発が終わったら、featureブランチ(sample)をdevelopブランチにマージする

$ git add .
$ git commit -m "hogehoge"      
$ git flow feature finish sample

3つ目のコマンドで、マージ・sampleブランチの削除・developブランチへの移動をしてくれる。

7. ローカルのdevelopブランチをリモートにプッシュする

$ git push origin develop

8. GitHubでプルリクエストを出して、レビューしてもらう

9. GitHub上でマージしたら、再度developブランチからfeatureブランチを切り、次の開発を進める。

※ おまけ

・他の人により更新されたリモートのdevelopブランチを、ローカルのdevelopブランチに反映する場合(随時)

$ git checkout develop
$ git pull origin develop

・開発したfeatureブランチ(sample)をリモートへプッシュする場合

$ git flow feature publish sample

・他の人が開発したfeatureブランチ(sample)をローカルにプルする場合

$ git flow feature track sample

さいごに

以上でおわりです。
git-flowを採用しているベンチャーも多いので、駆け出しエンジニアの方も勉強しておいて損はないと思います。
一方、git-flowは少々煩雑で、メンバーが運用できるようになるまでの初期コストが高いともいわれています。そのため、よりシンプルなブランチ運用モデルであるGitHub FlowやGitFeature Flowも勉強することをオススメします。(僕も勉強します)

参考文献

git-flowの使い方 - SMART 開発者のためのウェブマガジン
git-flowのインストールとブランチ運用前のリポジトリ準備 (1/2)
git-flow cheatsheet(日本語版)