はじめに
gitの運用で利用されるgit flowについてまとめます。
git flowって何?
gitの機能であるブランチを活用したgitの開発手法です。
複数人による開発をする時に、運用ルールを決めずにgitを採用してしまうと、コンフリクトが頻発したりmergeミスが発生したりしてしまいます。
そのような問題を回避し、最大限にgitを活用することができるのがgit flowです。
お恥ずかしながら、今回調べ直して知ったのですが、元は、ディベロッパーのDriessenさんが、ご自身のブログで公開した「A successful Git branching model」という記事から生まれたアイデアだそうです。
(日本語訳がありました)
5つのブランチ
詳細な説明は後述します。
master
リリースしたデータを置いておくブランチ。
develop
開発をおこなうためのブランチ。
release
リリース前に準備、微調整をおこなうブランチ。
feature
開発をおこなうためのブランチ。個々の機能の実装やバグの解決をおこなう。
hotfix
リリースされているデータに、緊急の修正対応をするためのブランチ。
各ブランチの詳細・説明
メインブランチ
master
サイトとして完全なもの。
masterブランチと公開された本番環境が同じソースということが多い。
前職ではmasterにmergeをすると本番環境に反映されていた。(本番環境=master)
mercurialではdefaultと同じ。
develop
開発中(更新案件なら次のリリース分)のものが完全な状態で反映されている。
開発作業の主軸となるブランチであり、各開発者が新規作成・修正したソースがこのブランチに集まる。
更新案件でいうと、masterとの差分は、「次のリリース」分のみ。
サポートブランチ
機能の追加や修正・準備、何かあったらすばやく修正するブランチをまとめて「サポートブランチ」といいます。
release
developでの開発作業が完了後、リリース時の微調整を行うブランチ。
releaseブランチはdevelopブランチから作成される。
分岐元:develop
marge先:developとmaster
feature
主に新機能などの開発・修正を行うブランチ。
ブランチ名は「feature/news」など、feature/の後に実装する機能などを記載する。
リリース前に新機能などににバグなどが見つかった場合、developからfeature/bug_xxなど修正用のブランチを切り、修正が終わったらdevelopにmergeする。
デバッグが終わるまでdevelopにmergeするのはNG。
分岐元:develop
marge先:develop
hotfix
リリース後に不具合が見つかったら作成されるブランチ。
(作成されない方がいいブランチでもある・・・)
分岐元:master
marge先:developとmaster
全体像
まとめ
- 分岐元やmerge先をミスってしまうと、大事故(そして面倒)になるので、気をつけること!
- LP1ページなどではここまでの運用はいらないと思いますが、小規模〜中規模案件で少しずつ慣れておくといいと感じます。
- master, release, develop, feature, hotfixの各ブランチの役割を把握・運用することが、
案件をスムーズに進めるための重要だと思います。
参考にさせていただいた記事
記事を書くにあたり、改めて勉強になりました!
Atlassian Git Tutorial