私は2つのプロジェクトに割り当てられています。どちらも共通の親から派生しており、ほぼ同時に親にマージされることを目標としています。簡単にするために、それらをmaster、projA、projBと呼びましょう。
ソースコードのフォルダ構造が次のようになっているとしましょう:
/ src / main / UI
/ src / main / backend
ファイルがあり、その中に新しい一般的なエラーハンドラーを追加したいとします。
この機能は、projAとprojBの間で共有する必要があります。
/src/main/backend/common/errorhandler.cpp
分岐は次のとおりです(マスターから分岐し、最終的にマスターにマージされます。aN/bNはプロジェクト固有の変更です。AN/BNは変更errorhandler.cppです。
-- projA--a1-a2--A1--
/ \
------ master
\ /
-- projB--b1-b2--B1--
したがって、ある時点で、projBで必要なprojAの変更がある可能性があるため、コミットは次のようになります(たとえば、A1をprojBにチェリーピックした後)。
-- projA--a1-a2--A1--a3---
/ \
------ master -- projA' -- projB'
\ /
-- projB--b1-b2--B1--A1'--
私が読んだことから、A1だけをprojBにマージすることはできません。a1、a2、およびA1をマージします。
projAとprojBの両方がマスターにマージされるときにA1`とA1が別々の変更として扱われることを犠牲にして、projBではA1'になるチェリーピックを使用できます。
私は誰かが私がまだマージを使用できるより良い計画を持っているかもしれないことを望んでいたので、私は「重複した」変更に終わらない。