ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

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

ブランチモデルの図

ライセンス明記を条件に再配布可能とのことなので、前述の原文にある図を以下に示します。 上記内容が可視化されていて分かりやすいです。

f:id:ztbuz:20131211080829p:plain

ライセンス

Author Original blog post License
Vincent Driessen http://nvie.com/archives/323 Creative Commons