git flow
git flowとは
Git flowとは、Gitの機能であるブランチを活用したGitの開発手法でもあり、ツールの名前でもあります。
複数人による長期の開発をおこなう場合、運用ルールを決めずにGitを採用してしまうと、コンフリクトが頻繁に起こったりマージのミスが発生したりと、大変なことになるかもしれません……。しかし、そうした問題を回避し、最大限にGitを活用することができるのが「Git flow」です。
元は、ディベロッパーのDriessen氏が自身のブログで公開した「A successful Git branching model」という記事から生まれたアイデアです。
A successful Git branching model
要は運用のルールをまとめてくれているモデルとツール、ということでしょうか。。
git flowの内容
git flowで定義されている5つ(+1)のブランチ。
参考:バージョン管理システム入門(初心者向け)
参考:【図解】git-flow、GitHub Flowを開発現場で使い始めるためにこれだけは覚えておこう
メインブランチ
master
リポジトリを作成すると自動で作られるブランチ。
ここには直接コミットなどはしない。公開前にmasterにマージして、本番環境に反映する。
=本番環境とmasterブランチは同じものになる。
develop
リポジトリを作成したら、masterブランチからdevelopブランチを切っておく。
ここにも直接コミットすることはない。
開発の中心になるブランチ。developブランチからさらにブランチを切って(feature)作業を行い、
完了したものからマージされる。
サポートブランチ
feature:
ひとつの機能や変更(タスク)ごとにdevelopからブランチを派生させてここで作業を行う。
ブランチの名前は変更の内容がわかるようにすること。
作業が完了したらdevelopにマージして、ブランチは削除する。
ひとつのfeatureブランチで行うタスクが多すぎると、バグが発生した時などに痛い目をみる。
release
リリース関連作業を行うためのブランチ。(ドキュメントを作ったり、バージョン情報を更新したり)
リリースができるようになったらdevelopブランチから派生させる。
リリース準備が完了したら、masterとdevelopにマージする。
hotfix
本番公開している時に生じる緊急の不具合を修正するときに使う。
masterから直接ブランチを切る。修正完了したらmasterとdevelopにマージする。
support(オプション)
旧バージョンの保守とリリースを行う。プロジェクトによっては不要。
実践:git flow Sourcetree
※スクショは全部Win版です
https://gyazo.com/be74e7cb5ec2b193fe7d5fb0fb57ee5d
1. GitFlowアイコンをクリック
Winはあるとおもいます。ツールバーで右クリックできないしね
2. リポジトリを初期化
文言でビビらせてくるけど、これはdevelopリポジトリを作るだけだから大丈夫。
なにか特別な指示が無い限りデフォルトで
3. フィーチャーブランチを切る(開発作業を行なう)
https://gyazo.com/7518009277c5aa20e4af76c7c419f8d7
またgitflowをクリックすると上記のようなポップアップがでる。
「新規フィーチャーを開始」を押す。
https://gyazo.com/b0168baa57b115c7880d562c13927313
フィーチャー名(ブランチ名)をつける。
わかりやすいやつ。featuteは入れなくても勝手についてくれる。
4. 機能開発
開発する
終わったらcommit
そのあと必要あればプルリクなど。。。
5. フィーチャー終了
https://gyazo.com/515704305dcecd428118b2981666f9c6
https://gyazo.com/0340eb583c2cdb1d6ada101f8fa68dae
ブランチを削除は必要に応じて
これでfeatureで行なった作業がdevelopにマージされる。
※リベースも指示があれば。
6. リリースブランチを切る
実践:git flow コマンド
リポジトリ作成
$ git flow init
masterブランチ・developブランチが作られる
featureブランチ作成
$ git flow feature start make-base
make-base→ブランチ名
自動的にdevelopブランチから派生したmake-baseという名前のfeatureブランチが作られる。
ステージング・コミット
$ git add *
$ git commit -m ベースの作成
make-baseでの作業が完了したらコミットする。(通常とおなじ)
developにマージ
$ git flow feature finish make-base
問題なく修正が完了した場合