我被分配到两个项目,这两个项目都来自一个共同的父级,并且目标是大约在同一时间合并回父级。为简单起见,我们称它们为 master、projA 和 projB。
假设源代码的文件夹结构是:
/src/main/UI
/src/main/backend
假设有一个文件,我们想在其中添加一个新的通用错误处理程序。
此功能应在 projA 和 projB 之间共享。
/src/main/backend/common/errorhandler.cpp
分支如下(均从 master 分支并最终合并回 master。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。
我可以使用cherry-pick,这将是projB中的A1',但代价是当projA和projB都合并回master时,A1`和A1被视为单独的更改。
我希望有人可能有一个更好的计划,我仍然可以使用合并,这样我就不会得到“重复”的更改。