Galileo Figaro

常に初陣!

プルリク中に次の開発を始めるときのTips

想定しているケース

例えば、下図ので featureY と featureZ がプルリクのレビュー中で、main へのマージ待ちとします。

mainfeatureXfeatureYfeatureZABCDE

ここで、main から新たにブランチを作成して開発を開始したいとします。 しかし、そのためには featureY と featureZ のコードが欲しい、ということがよくあります。 これらが main にマージされるまで、ローカルのみで開発を進めておく方法を説明します。

ローカルで先行開発用のブランチを作成する

ローカルで、main からブランチ (下図のnext) を作成し、そこに欲しいブランチ (featureY と featureZ) をマージします。

mainfeatureXfeatureYfeatureZnextABCDE

そこから開発を始めれば、featureY と featureZ が入った状態で、開発を始めることができます。 当たり前ですが。

mainfeatureXfeatureYfeatureZnextABCDEFGH

先行開発する next ブランチは、あくまでもローカルブランチのみです。 プッシュしてはいけません。

プルリクが終わったら

featureY と featureZ のプルリクが終わって、main へマージされたら、改めて main からブランチを作成し、コミットを移し替えます。

まず、featureY と featureZ がマージされて、次のような形になっているとします。

mainfeatureXfeatureYfeatureZnextABCDEFGH

ここで、main から新たにブランチ featureW を作成し、先行開発しておいたコミット F、G、H を、順にすべてチェリーピックします。 それぞれ、チェリーピックすると、F2、G2、H2というコミットが生成されたとします。

mainfeatureXfeatureYfeatureZnextfeatureWABCDEFGHF2G2H2

コミットをすべて新しいブランチに移し替えたら、古いブランチ (next) は削除してしまいましょう。

mainfeatureXfeatureYfeatureZnextfeatureWABCDEF2G2H2

これで、featureW をプルリクに出す準備が整いました。

このように、ローカルで先行開発しておいて、必要なブランチがマージされたら、すぐに次のプルリクを出すことができます。