branchの運用について


Git(GitHub)で、以下の様なリモートブランチで作業していたとします。

master  
\--develop  
\--branchA  
\--branchB  
\--branchC

通常の運用では、各ブランチの開発が終わったらdevelopにマージし、ステージングで確認した後にmasterにマージして本番リリースとなりますが、以下の様な状況が発生した場合、どうするのが効率的でしょうか。

  * branchCだけを再優先でリリースしなければならなくなった
  * 既にbranchAはdevelopにマージ済みだが、ステージングで未確認のため本番リリースはできない
  * branchBはリモートにPush済かつPullRequest発行済でレビュー中のため、まだdevelopにはマージしていない

branchCをリリースするためにbranchAの確認を急いでbranchAとCを同時にリリースする、と言うのはナシで、あくまで先にbranchCのみリリースしたいです。

また、例のようにマージ済みのブランチが1つだけならまだいいですが、実際は複数あります。

何かいい方法があったら教えていただけますでしょうか。  
よろしくお願いします。

※Gitの仕組みをキチンと理解してないで無謀なことを言ってしまえば、branchCの親をdevelopからmasterに変えてしまうようなことができれば、hotfix的に扱えて理想的なんですが…(^-^;




develop/master/topic ブランチの概念を持ち出しているということは、 [git
flow](http://danielkummer.github.io/git-flow-cheatsheet/)
のワークフローを想定しているのだと思います。

branchC を HotFix 扱いして、 master へマージしてはどうでしょうか。

* * *

git flow 的に HotFix 扱いするのなら、具体的な作業は次のようになるかと思います。

  * branchC を develop ではなく、 master から派生させる形で rebase する。  
(`git rebase --onto` などが使えるかと)

  * master--branchC の形にしてから、 master へマージする。
  * 新たな master を HotFix としてリリースする
  * (develop が置いていかれてるので) branchC を develop にマージする

