git cherry-pick具有祖先意识,而不只是应用补丁?

时间:2015-08-19 15:26:53

标签: git git-merge git-cherry-pick

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.

现在我们想挑选A1A2进入发布分支。显然,我们不能只是挑选它们,因为  删除/修改foo()时会发生冲突。

但聪明的人可以看到A1和A2如何删除并重新添加foo()以及如何将其合并到release分支中。你甚至可以制作一个算法,在dev已经在A1,A2之后的所有提交release的情况下执行它,然后返回到提交,然后重新提交-apply A1, A2, B按照它们应用于dev的顺序,然后获取文件的最终状态并将其放在B'之后。在release分支上。 (因为在release分支上,不允许 允许进行历史记录修改。)

这一切都很好,但它很快变得毛茸茸。如果merge - 就像cherry-pick中的共同祖先的聪明和意识一样,那肯定会很好。这可能吗?

史蒂夫

[1]我知道你可能认为这很荒谬。请不要打扰告诉我。老实说,它比你想象的要复杂得多,而且有充分的理由。我试图为这个问题保持简单,并且对于为什么在这种情况下这是正确的事情进行多页解释并不符合任何人的最佳利益。

0 个答案:

没有答案