連載
» 2013年11月18日 18時00分 公開

いまさら聞けない、成功するブランチモデルとgit-flowの基礎知識Gitブランチを使いこなすgit-flow/GitHub Flow入門(1)(2/2 ページ)

[岡本隆史,@IT]
前のページへ 1|2       

git-flowの5つのブランチモデル

 git-flowでは、下記の5つのブランチを利用します。

  1. developブランチ
    開発を行うためのブランチ。開発者は、主にこのブランチ上で作業を行う。次に紹介するfeatureブランチなど、他のブランチで行った作業は、ここにマージされる
  2. featureブランチ
    主要な機能を実装するためのブランチ。機能の実装やバグフィックスなど、タスクごとにfeatureブランチを作成し、作業を行う
  3. releaseブランチ
    リリースの準備を行うためのブランチ。プロダクトをリリースする前に、このブランチを作成し、微調整を行う。releaseブランチを作成することで、リリース準備と次のバージョンに向けた開発のコードを分けることができる
  4. masterブランチ
    リリースしたソースコードを管理するためのブランチ。リリース作業を行うと、releaseブランチはmasterブランチへマージされて、リリースタグが打たれる。開発者は、このブランチへのコミットは行わない
  5. hotfixブランチ
    リリースされたソフトウェアに緊急の修正を行うためのブランチ。このブランチでの修正内容は、すぐにリリースされるので、hotfixブランチはリリースを管理するmasterブランチへマージされる

 以下、各ブランチについて解説します。

developブランチ、featureブランチ

 developブランチは、開発の主軸となるブランチです。featureブランチで各機能の開発やバグフィックスを行い、developブランチへマージして開発します。このとき、featureブランチをマージする前に、テストをきちんと行ってからマージすることにより、開発の最新版を安定した状態に保つことができ、バグの混入による他の開発者の開発の阻害を防ぐことができます

 featureブランチは、マージコミットを用いてdevelopブランチへマージされます。これにより、明示的に機能がマージされたブランチが明らかになり、前述のファーストフォワードマージを利用したときに問題となる、「どのブランチで作業したコミットなのか分からなくなる」ことはなくなります。

図3 developブランチとfeatureブランチの運用イメージ

releaseブランチ、masterブランチ

 developブランチで開発を行っていき、ソフトウェアをリリースする段階になると、releaseブランチを作成し、そこでリリースに向けた作業を行っていきます。基本的には細かいドキュメントの修正やバグフィックスを行います。準備が終わってリリースする際には、リリースブランチをmasterブランチへマージし、リリースタグを打ちます。これにより、リリース時のソースコードを確定します。

 git-flowのブランチモデルでは、masterブランチにコミットを行いません。そのため、masterブランチを見れば、リリースしたコードの状態が把握できるようになっています。

 また、releaseブランチで作業した内容を、同時にdevelopブランチにもマージし、最新の開発版に反映させます。これにより、リリース時に行ったバグ修正のdevelopブランチへの反映漏れを防ぐことができます。

図4 リリース時のマージイメージ

hotfixブランチ

 ソフトウェアをリリースした後、セキュリティホールやシステムをクラッシュさせるような緊急のバグへの対応は、ホットフィックスとしてリリースされることがあります。ホットフィックスは、現在行っている次バージョンへの開発とは別に緊急でリリースされます。このホットフィックスの作業を行うブランチがhotfixブランチです。

 hotfixブランチは、リリースのソースを確定したmasterブランチから作成され、hotfixのリリースと共にmasterブランチへマージされ、タグ付けされます。

 hotfixブランチをdevelopブランチにもマージすることにより、開発ブランチへの修正の反映漏れを防ぐことができます。

図5 hotfixブランチのマージ

なぜ、git-flowを使うのか

 今回は、git-flowで利用されているブランチモデルを紹介しましたが、いかがでしたでしょうか。

 これらのブランチの管理を手動で行うと、手順が煩雑になり大変です。また、関連するブランチへのマージ漏れが発生する可能性もあります。git-flowを利用すれば、簡単なコマンドを実行するだけで、これらのブランチの操作を自動で行ってくれます。

 次回は、実際にgit-flowを利用したブランチ操作を具体的に紹介したいと思います。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。