Git使うなら絶対に一度は読んだ方がいい良エントリ
理屈は本文読めということで、ルール的な箇所を抽出
#ブランチの種類
- メインブランチ
- サポートブランチ
サポートブランチはさらに3種類に分類される
#メインブランチ
- メインブランチはmasterとdevelopの二つ
- この二つは常に存在するし、削除しない
- masterでの開発は一切しない
- developで開発してmasterにマージするのが大きな流れ
#サポートブランチ
- フィーチャーブランチ
- リリースブランチ
- ホットフィックスブランチ
- 用が済めば削除される
##フィーチャーブランチ
- developから分岐してdevelopにマージされる
- 命名規則は特に無し(他の種類のブランチと区別がつくように)
- 個々の機能を実装する
- originにはpushしない
###フィーチャーブランチの一生
$ git checkout -b myfeature develop
$ # 機能の開発
$ git commit -m 'Implement myfeature'
$ git checkout develop
$ git merge --no-ff myfeature # --no-ffフラグでマージして
$ git branch -D myfeature # 開発が終了したブランチは削除する
$ git push origin develop
--no-ff
フラグについては本文参照
##リリースブランチ
- developから分岐してmasterにマージされる
- デプロイ用の変更を開発環境に反映したければdevelopにもマージする
- 命名規則は
release-*
- 機能開発はしない
- デプロイの準備をする
###リリースブランチの一生
$ git checkout -b release-1.2 develop # version1.2のためのリリースブランチ
$ # リリースのための作業
$ git commit -m 'Version 1.2'
$ git checkout master
$ git merge --no-ff release-1.2
$ git tag -a 1.2
$ git branch -D release-1.2
##ホットフィックスブランチ
- masterから分岐してdevelopとmasterにマージされる
- 本番環境発覚したバグなどに対応する
- 命名規則は
hotfix-*
- 機能開発ではない
###ホットフィックスブランチの一生
$ git checkout -b hotfix-1.2.1 master
$ #バグフィックス
$ git commit -m 'Fixed severe production problem'
$ # バージョンを一つ上げる
$ git commit -am 'Version 1.2.1'
$ git checkout master
$ git merge --no-ff hotfix-1.2.1
$ git tag -a 1.2.1
$ git checkout develop # もしリリースブランチがあれば、そっちにマージ
$ git merge --no-ff hotfix-1.2.1
$ git branch -D hotfix-1.2.1