質問: 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 のワークフローを想定しているのだと思います。 branchC を HotFix 扱いして、 master へマージしてはどうでしょうか。 git flow 的に HotFix 扱いするのなら、具体的な作業は次のようになるかと思います。 * branchC を develop ではなく、 master から派生させる形で rebase する。 (`git rebase --onto` などが使えるかと) * master--branchC の形にしてから、 master へマージする。 * 新たな master を HotFix としてリリースする * (develop が置いていかれてるので) branchC を develop にマージする