いまさら聞けない、成功するブランチモデルとgit-flowの基礎知識:Gitブランチを使いこなすgit-flow/GitHub Flow入門(1)(2/2 ページ)
数回に渡ってgit-flowとGitHub Flowを使ったGitの活用テクニックを紹介します。初回は、ブランチ管理の課題と効率的にバージョン管理できる5つのブランチモデルと、ブランチの管理を簡単に行えるツール「git-flow」について。
git-flowの5つのブランチモデル
git-flowでは、下記の5つのブランチを利用します。
- developブランチ
開発を行うためのブランチ。開発者は、主にこのブランチ上で作業を行う。次に紹介するfeatureブランチなど、他のブランチで行った作業は、ここにマージされる - featureブランチ
主要な機能を実装するためのブランチ。機能の実装やバグフィックスなど、タスクごとにfeatureブランチを作成し、作業を行う - releaseブランチ
リリースの準備を行うためのブランチ。プロダクトをリリースする前に、このブランチを作成し、微調整を行う。releaseブランチを作成することで、リリース準備と次のバージョンに向けた開発のコードを分けることができる - masterブランチ
リリースしたソースコードを管理するためのブランチ。リリース作業を行うと、releaseブランチはmasterブランチへマージされて、リリースタグが打たれる。開発者は、このブランチへのコミットは行わない - hotfixブランチ
リリースされたソフトウェアに緊急の修正を行うためのブランチ。このブランチでの修正内容は、すぐにリリースされるので、hotfixブランチはリリースを管理するmasterブランチへマージされる
以下、各ブランチについて解説します。
developブランチ、featureブランチ
developブランチは、開発の主軸となるブランチです。featureブランチで各機能の開発やバグフィックスを行い、developブランチへマージして開発します。このとき、featureブランチをマージする前に、テストをきちんと行ってからマージすることにより、開発の最新版を安定した状態に保つことができ、バグの混入による他の開発者の開発の阻害を防ぐことができます
featureブランチは、マージコミットを用いてdevelopブランチへマージされます。これにより、明示的に機能がマージされたブランチが明らかになり、前述のファーストフォワードマージを利用したときに問題となる、「どのブランチで作業したコミットなのか分からなくなる」ことはなくなります。
releaseブランチ、masterブランチ
developブランチで開発を行っていき、ソフトウェアをリリースする段階になると、releaseブランチを作成し、そこでリリースに向けた作業を行っていきます。基本的には細かいドキュメントの修正やバグフィックスを行います。準備が終わってリリースする際には、リリースブランチをmasterブランチへマージし、リリースタグを打ちます。これにより、リリース時のソースコードを確定します。
git-flowのブランチモデルでは、masterブランチにコミットを行いません。そのため、masterブランチを見れば、リリースしたコードの状態が把握できるようになっています。
また、releaseブランチで作業した内容を、同時にdevelopブランチにもマージし、最新の開発版に反映させます。これにより、リリース時に行ったバグ修正のdevelopブランチへの反映漏れを防ぐことができます。
hotfixブランチ
ソフトウェアをリリースした後、セキュリティホールやシステムをクラッシュさせるような緊急のバグへの対応は、ホットフィックスとしてリリースされることがあります。ホットフィックスは、現在行っている次バージョンへの開発とは別に緊急でリリースされます。このホットフィックスの作業を行うブランチがhotfixブランチです。
hotfixブランチは、リリースのソースを確定したmasterブランチから作成され、hotfixのリリースと共にmasterブランチへマージされ、タグ付けされます。
hotfixブランチをdevelopブランチにもマージすることにより、開発ブランチへの修正の反映漏れを防ぐことができます。
なぜ、git-flowを使うのか
今回は、git-flowで利用されているブランチモデルを紹介しましたが、いかがでしたでしょうか。
これらのブランチの管理を手動で行うと、手順が煩雑になり大変です。また、関連するブランチへのマージ漏れが発生する可能性もあります。git-flowを利用すれば、簡単なコマンドを実行するだけで、これらのブランチの操作を自動で行ってくれます。
次回は、実際にgit-flowを利用したブランチ操作を具体的に紹介したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- これでGitも怖くない! GUIでのバージョン管理が無料でできるSourceTreeの7つの特徴とは
SourceTreeは直観的なGUIで使いやすい、今話題の無料のリポジトリ管理ツールです。本稿では、Windows版のSourceTreeをGitサポート機能を中心に紹介します。 - かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(5):「うわっ…私のバージョン管理、ダメ過ぎ…?」を解決するGitの使い方“超”入門
マージ、ブランチ、リポジトリ、コミット、リビジョン、インデックス、プル、フェッチなどの用語も図で解説 - かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(6):Redmine×Gitのハーモニーは涙のチケット駆動開発!?
ALMiniumのGit連携機能「リポジトリブラウザ」「コミット/ブランチとチケットの関連付け」などを解説 - ユカイ、ツーカイ、カイハツ環境!(15):Java EE 6/Tomcat 7/Gitに対応したEclipse 3.6
先日公開されたHeliosの主な変更点や、Windows 64ビット版/デスクトップLinuxへの対応、日本語化、次世代版の「e4」を紹介します - ユカイ、ツーカイ、カイハツ環境!(3):分散バージョン管理Git/Mercurial/Bazaar徹底比較
分散型のバージョン管理とは何かについて解説し、3つを徹底比較する。TracやSubversion、Eclipse、Windowsとも連携可能だ - ユカイ、ツーカイ、カイハツ環境!(20):Bazaarでござ〜る。猿でもできる分散バージョン管理
「SubversionやCVSは使っているがGitなど分散型は難しい」という人にお勧めのBazaar。その特徴や使い方を徹底解説します - UXClip(35):和製GitHubの「gitBREAK」は「儲からなくてもいい」
和製GitHubの「gitBREAK」は「P/L(profit and loss)は追いかけない」らしい。彼らが目指す「遠くても大きな利益」とは? - いまどきのソース・コード管理:第1回 TFS Expressで始めるソース・コード管理
ソース・コード管理のオンライン・サービス「Team Foundation Service」とTFS/Gitなどのオンプレミス・ツールを解説する連載スタート - 他ツールとの連携も強化:Git 1.7.5がリリース、メッセージの国際化へ一歩
オープンソースの分散バージョン管理システム「Git」の最新バージョン、「Git v.1.8.0」が10月21日、リリースされた。 - Subversion 1.7に対応:分散バージョン管理システム「Git」がバージョンアップ
- [Analysis]ソーシャル化するOSS開発者たち