Gitのブランチの運用ルール
以下のページを参考に、自分なりに分かりやすいようにまとめてみました。 「こうした方がいいのでは」という知見も入れるべきなのでしょうが、まともに開発したことがないので今回は勘弁してください。。。
しばらくこれで運用してみて、自分なりに運用ルールをブラッシュアップしていきます。
ブランチ一覧
基本的に以下のブランチのみで運用します。
- master
- develop
- feature/*
- release/*
- hotfix/*
master
/develop
には直接コミットせず、マージのみにより変更します。
各ブランチについて
フィーチャーブランチ
分岐元 | マージ先 | ブランチ名 |
---|---|---|
develop | develop | feature/* |
新しい機能を開発するときは、基本的にフィーチャーブランチを切って開発します。
開発が完了したらdevelop
ブランチにマージし、フィーチャーブランチは削除します。
フィーチャーブランチの作成
$ git checkout -b feature/hoge develop
developブランチにマージ
$ git checkout develop
$ git merge —no-ff feature/hoge
$ git branch -d feature/hoge
$ git push origin develop
リリースブランチ
分岐元 | マージ先 | ブランチ名 |
---|---|---|
develop | master/develop | release/* |
次のリリースが決まったら、リリースブランチを切って開発します。
開発が完了したらmaster
/develop
ブランチにマージし、リリースブランチは削除します。
また、master
ブランチにはタグをつけます。
リリースブランチの作成
$ git checkout -b release/1.0 develop
masterブランチにマージ
$ git checkout master
$ git merge —no-ff release/1.0
$ git tag -a 1.0
$ git push origin master
$ git push origin 1.0
developブランチにマージ
$ git checkout develop
$ git merge —no-ff release/1.0
$ git push origin develop
リリースブランチを削除
$ git branch -d release/1.0
ホットフィックスブランチ
分岐元 | マージ先 | ブランチ名 |
---|---|---|
master | master/develop | hotfix/* |
master
ブランチに致命的なバグが発生したら、ホットフィックスブランチを切って修正します。
修正が完了したらmaster
/develop
ブランチにマージし、ホットフィックスブランチは削除します。
また、master
ブランチにはタグをつけます。
ホットフィックスブランチの作成
$ git checkout -b hotfix/1.0.1 master
masterブランチにマージ
$ git checkout master
$ git merge —no-ff hotfix/1.0.1
$ git tag -a 1.0.1
$ git push origin master
$ git push origin 1.0.1
developブランチにマージ
$ git checkout develop
$ git merge —no-ff hotfix/1.0.1
$ git push origin develop
このとき、リリースブランチが存在していたら、develop
ブランチではなくリリースブランチにマージします。
ホットフィックスブランチの削除
$ git branch -d hotfix/1.0.1
ブランチモデルの図
ライセンス明記を条件に再配布可能とのことなので、前述の原文にある図を以下に示します。 上記内容が可視化されていて分かりやすいです。
ライセンス
Author | Original blog post | License |
---|---|---|
Vincent Driessen | http://nvie.com/archives/323 | Creative Commons |