在不触及直接子分支的情况下合并孙分支的更改?

Merge changes from grandchild branch without touching direct child?

我们有一个分支 a。有人需要改进功能 B 他们计划使用 a 中的功能。所以他们从 a 分支出来,分支 b。然后,有人想改进 a 中的特定功能以获得 B 性能的质的提升,因此他们从 b 分支出来并创建了 c.

我的问题是,获得所有 更改的最佳方法是什么 具体添加 c 并将它们放入 a 而无需 b。 在这种情况下你应该使用 Cherry Pick 吗?有更好的方法来完成这个吗?这会导致 git 中的混乱错误吗?

一种更简洁的方法是从 a 分支 c,而不是 b
然后将 c 合并到 a 并在 a
之上变基 b (或在 c 之上变基 b,而 c 尚未在 a 上合并)。

如果您从 b 分支 c 和 cherry-pick,您稍后在将 b(可能包括 c 增强)合并到 a 时可能会遇到问题。
那是因为 cherry-picking 可以引入 duplicate commits and/or functional dependencies.
当您知道无论如何都不会合并那个 "one branch" 时,您通常会从一个分支挑选到另一个分支。