git-flowの概要
git-flowとは
git-flowは、主にGitのブランチ操作を自動化するためのツールです。
Gitはブランチが簡単に作れるようになっていますが、ブランチの管理方法についてはルールが定められていないため、ブランチの扱いで混乱が起きやすくなっています。
そこで、ブランチ管理のルールを設けて、作業の自動化をはかったのがgit-flowになります。
git-flowを使った場合のリポジトリ初期化からブランチ作成、終了までの簡単な流れは下記のようになります。
# リポジトリの初期化
git flow init -d
# 開発用featureブランチの作成
git flow feature start ver1.0
...作業
# コミットします。
git commit -am "開発終了"
# 開発終了後、ブランチを終了します
git flow feature finish ver1.0
git-flowを導入するメリットには下記のようなものがあります。
git-flowのメリット
- 本番リリースしたデータと、制作中のデータの区別が明確になる
- 修正、リリース、機能追加などのいくつもの種類の違う作業を並行して進められる
- リリースした内容の調査が簡単になる
- git-flow用のコマンドでほとんどの管理を行えるので、操作マニュアルを用意しやすい
開発モデル:A successful Git branching model
git-flowはA successful Git branching modelという開発モデルに基づいています。
A successful Git branching model(翻訳版)
A successful Git branching model では masterとdevelopのメインブランチが常に存在し、必要に応じてfeature、release、hotfixといったサポートブランチが作成されます。
このfeature、release、hotfixブランチはmasterとdevelopの両方、もしくはdevelopのみにマージされ、マージ後は削除されます。
各メインブランチ、サポートブランチの特徴・役割は下記のとおりです。
メインブランチとサポートブランチの一覧
- master :
- 常にリリースできる状態のメインブランチ
- develop :
- 最新の開発作業の変更を常に反映するメインブランチ
- feature :
- 新機能の開発を行うサポートブランチ
- release :
- リリースの準備用サポートブランチ
- hotfix :
- バグフィックス用のサポートブランチ
このA successful Git branching modelを運用しやすいように、コマンドをまとめたのがgit-flowです。
そのため、git-flowはA successful Git branching modelを理解し、そのモデルを使って運用することが前提となります。