シナリオ:
production(P)ブランチと、いくつかの新機能に取り組むために作成したcurrent(C)ブランチがあります。それらのいくつかは準備ができていますが、残りの作業は予想よりも時間がかかります。
現在準備ができている機能を本番環境にプッシュ(および本番環境(P)ブランチとマージ)してから、残りの機能を引き続き作業したいと思います現在(C)ブランチ。
私の考え:
新しい製品版(PP)ブランチを作成し、準備ができていないコードへの参照をすべて削除して、製品版(P)ブランチにマージできます。次に、作業を続けてcurrent(C)ブランチを作成し、作業の準備ができたらproduction(P)ブランチにマージします。
問題:
pre-production(PP)ブランチで参照を削除すると、後でcurrent(C)ブランチをproductionとマージするときに多くの競合が発生します(P)ブランチ。コードの重要な変更を見逃してしまう可能性があります。競合を回避して、どうすればそれを改善できますか?マージはGitの力なので、重要なことはわからないと思います。
あなたはあなたのgitフローに間違いを犯しました、そしてあなたを救う優雅なものはもうありません。 Cから作成されたブランチからremoveのものを作成しようとするよりも、より良い解決策はPP Pブランチと cherry-pick Cブランチを新しいブランチPPに。
git checkout production
git pull
git checkout -b pre_production
git cherry-pick ...
どうして?あなたの場合、とにかくブランチCのコードを調べなければならず、あなたのアプローチを使用して、何を削除し、何を残すべきかを決定する必要があります。
将来のケースの解決策は、ブランチをより機能指向にすることです。そうすれば、本当に必要な機能のみをマージできます。