merge
如果cherry-pick
中有共同祖先的聪明和意识,那肯定会很好。这可能吗?
假设我们遇到这种情况。我们有一个开发,其中提交dev
并被挑选到release
。 [1]
X----Y---A1---A2---B---Z dev
\
\----B' release
A1: Remove function foo()
A2: Re-add function foo() (ooops, it was needed) and change function bar()
(A1 and A2 are listed together becuase they are two commits, attempts, to fix the same bug.)
B: Modify function foo()
B': B is cherry-picked into the release branch
X, Y, Z: changes touching unrelated files. No conflicts here.
现在我们想挑选A1
和A2
进入发布分支。显然,我们不能只是挑选它们,因为
删除/修改foo()
时会发生冲突。
但聪明的人可以看到A1和A2如何删除并重新添加foo()
以及如何将其合并到release
分支中。你甚至可以制作一个算法,在dev
已经在A1,A2
之后的所有提交release
的情况下执行它,然后返回到提交,然后重新提交-apply A1, A2, B
按照它们应用于dev
的顺序,然后获取文件的最终状态并将其放在B'之后。在release
分支上。 (因为在release
分支上,不允许 允许进行历史记录修改。)
这一切都很好,但它很快变得毛茸茸。如果merge
- 就像cherry-pick
中的共同祖先的聪明和意识一样,那肯定会很好。这可能吗?
史蒂夫
[1]我知道你可能认为这很荒谬。请不要打扰告诉我。老实说,它比你想象的要复杂得多,而且有充分的理由。我试图为这个问题保持简单,并且对于为什么在这种情况下这是正确的事情进行多页解释并不符合任何人的最佳利益。