我一直在分支new_feature
:
A -- B -- C -- D master
\ \
\ 1 -- 2 -- 3 new_feature
\
E -- F -- G port
我们的代码库还有一个较旧的分支port
,其他开发人员将我们的产品移植到另一个RDBMS。 port
尚未准备好合并回master
。
最近有必要让new_feature
在port
工作。所以我将这两个合并到一个新的分支port/new_feature
中,并在那里做了一些提交(I,J)以使其工作:
A -- B -- C -- D master
\ \
\ 1 -- 2 -- 3 -- I* -- J* -- K new_feature
\ \
E -- F -- G -- H -- I -- J -- K* port/new_feature
port
我挑选了I和J回到new_feature
(因为我*,J *),因为它们涉及我想在new_feature
中进行的重大重构。我也一直在向new_feature
提交需要转移到port/new_feature
(K *)的新提交(K)。
展望未来,保持new_feature
和port/new_feature
同步(但仅针对新变更)的最佳方案是什么?我应该保持从一个到另一个的樱桃采摘(反之亦然)吗?或者有一种方便的方法来合并吗?
答案 0 :(得分:1)
采摘樱桃是危险的,因为:
重复提交(下一次合并会很复杂,因为Git会尝试在I-J-K
)之上重新应用I-J-K
。
如果您将一个分支重新设置在另一个分支之上,则不会出现这种情况(请参阅“Git cherry pick and datamodel integrity”),但在您的情况下这是不可能的。
功能依赖(请参阅“How to merge a specific commit in git”),但我怀疑这不是您的问题:I
和J
不依赖于{{ 1}},可以安全地应用于H
。
如果您不打算将端口和新功能合并在一起,那么采摘樱桃很方便 如果是这种情况,请继续挑选。