git-flowでは、下記の5つのブランチを利用します。
以下、各ブランチについて解説します。
developブランチは、開発の主軸となるブランチです。featureブランチで各機能の開発やバグフィックスを行い、developブランチへマージして開発します。このとき、featureブランチをマージする前に、テストをきちんと行ってからマージすることにより、開発の最新版を安定した状態に保つことができ、バグの混入による他の開発者の開発の阻害を防ぐことができます
featureブランチは、マージコミットを用いてdevelopブランチへマージされます。これにより、明示的に機能がマージされたブランチが明らかになり、前述のファーストフォワードマージを利用したときに問題となる、「どのブランチで作業したコミットなのか分からなくなる」ことはなくなります。
developブランチで開発を行っていき、ソフトウェアをリリースする段階になると、releaseブランチを作成し、そこでリリースに向けた作業を行っていきます。基本的には細かいドキュメントの修正やバグフィックスを行います。準備が終わってリリースする際には、リリースブランチをmasterブランチへマージし、リリースタグを打ちます。これにより、リリース時のソースコードを確定します。
git-flowのブランチモデルでは、masterブランチにコミットを行いません。そのため、masterブランチを見れば、リリースしたコードの状態が把握できるようになっています。
また、releaseブランチで作業した内容を、同時にdevelopブランチにもマージし、最新の開発版に反映させます。これにより、リリース時に行ったバグ修正のdevelopブランチへの反映漏れを防ぐことができます。
ソフトウェアをリリースした後、セキュリティホールやシステムをクラッシュさせるような緊急のバグへの対応は、ホットフィックスとしてリリースされることがあります。ホットフィックスは、現在行っている次バージョンへの開発とは別に緊急でリリースされます。このホットフィックスの作業を行うブランチがhotfixブランチです。
hotfixブランチは、リリースのソースを確定したmasterブランチから作成され、hotfixのリリースと共にmasterブランチへマージされ、タグ付けされます。
hotfixブランチをdevelopブランチにもマージすることにより、開発ブランチへの修正の反映漏れを防ぐことができます。
今回は、git-flowで利用されているブランチモデルを紹介しましたが、いかがでしたでしょうか。
これらのブランチの管理を手動で行うと、手順が煩雑になり大変です。また、関連するブランチへのマージ漏れが発生する可能性もあります。git-flowを利用すれば、簡単なコマンドを実行するだけで、これらのブランチの操作を自動で行ってくれます。
次回は、実際にgit-flowを利用したブランチ操作を具体的に紹介したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.