想定しているケース
例えば、下図ので featureY と featureZ がプルリクのレビュー中で、main へのマージ待ちとします。
ここで、main から新たにブランチを作成して開発を開始したいとします。 しかし、そのためには featureY と featureZ のコードが欲しい、ということがよくあります。 これらが main にマージされるまで、ローカルのみで開発を進めておく方法を説明します。
ローカルで先行開発用のブランチを作成する
ローカルで、main からブランチ (下図のnext) を作成し、そこに欲しいブランチ (featureY と featureZ) をマージします。
そこから開発を始めれば、featureY と featureZ が入った状態で、開発を始めることができます。 当たり前ですが。
先行開発する next ブランチは、あくまでもローカルブランチのみです。 プッシュしてはいけません。
プルリクが終わったら
featureY と featureZ のプルリクが終わって、main へマージされたら、改めて main からブランチを作成し、コミットを移し替えます。
まず、featureY と featureZ がマージされて、次のような形になっているとします。
ここで、main から新たにブランチ featureW を作成し、先行開発しておいたコミット F、G、H を、順にすべてチェリーピックします。 それぞれ、チェリーピックすると、F2、G2、H2というコミットが生成されたとします。
コミットをすべて新しいブランチに移し替えたら、古いブランチ (next) は削除してしまいましょう。
これで、featureW をプルリクに出す準備が整いました。
このように、ローカルで先行開発しておいて、必要なブランチがマージされたら、すぐに次のプルリクを出すことができます。