最近、現場で少し使うようになったgit flowに関して。
gitでbranchを切って開発をする場合、
- git branch ブランチ名でブランチ作る
- なんらかの開発
- 開発が終わったらgit merge
とやることが一般的でした。
ブランチを恒常的に分けて使う場合は、基本的にこの方法で問題ないと思います。
ただdeveopブランチがあり、特定の機能をつけたい場合など、developでそのままやっていると他の方との開発と干渉してしまう可能性があります。
そこで、特定の機能などがある場合、git flowを使うと上記の流れがスムーズになります。
Contents
git flowとは
git flowを使うと特定機能の改修時にfeatureブランチという一時的なブランチを作成します。
これにより
- git flowを使ってfeatureブランチ作成(feature/フューチャーブランチ名)
- なんらかの開発
- developブランチ,masterブランチにマージ
- featureブランチはもう終わったので、削除
という流れができます。
参考URL
実際のコマンド
前提条件として、masterとdevelopブランチが存在していること
git flowのインストール
(gitの標準機能ではなくて、プラグインをインストールする必要があるようです。)
1 |
brew install git-flow-avh |
git flowの登録
git flowを使う場合、下記のコマンドで登録的な処理をすることが必要なようです。
1 |
git flow init |
この操作はブランチにつき、1回のようです。
master,developに当たるブランチの登録などが対話形式で進んでいきます。
例えばdevelopに相当するブランチをdevにしたいなどは変更ができるようです。
特定機能のためのfeatureブランチを作成
実際にfeatureブランチを作成します。
1 2 3 4 5 6 7 |
git flow feature start kinou1 #これによりfeature/kinou1というブランチが作成されました。 #pushは通常通りgit push origin feature/kinou1でもいいですが、 #下記コマンドが正しいやり方のようです。 git flow feature publish kinou1 |
実際の開発
通常のgit add ,git commit,git push
など。
ちなみに複数人で特定の機能を開発したい場合、当然他人のブランチを取り入れる必要があるので、
git flow feature pull feature kinou1
と打つと自分のローカルにブランチを持ってこれるようです。(通常のfetchでも問題ないようですが・・)
マージ作業
通常通りgit mergeをしてもいいですが、
git flow feature finish kinou1
というコマンドを使いますと自動的にmergeされ、かつfeatureブランチは寿命がきたので、削除されるようです。リモートへはgit branch --delete origin feature/kinou1
とうって削除しておいた方が良いでしょう。
成功すると下記のようなメッセージが出ます。
1 2 3 4 |
Summary of actions: - The feature branch 'feature/kinou1' was merged into 'develop' - Feature branch 'feature/kinou1' has been removed - You are now on branch 'develop' |
本来はdevelopブランチをさらにリリースする前に分岐させ、masterにあてるためのreleaseブランチというのもあるようです。(リンク参照)
参考リンク
またバグ修正などはちょっと流れが違いますが、同じタイプのブランチとしてhot-fix
というブランチもあるようです。