2014-09-24 95 views
2

假设我樱桃挑选一些提交到我的分支git cherry-pick。之后,我们假设我将我的分支重新分配到我的父分支以获得最新信息。 git会不会还记得这些提交已被挑选出来?这很重要,因为我不希望这些提交会在我的分支合并回樱桃挑选的父分支时变成哑巴冲突。在樱桃采摘的提交中使用git rebase有什么后果?

通过我的例子一步一步:

  1. 从分支A
  2. 承诺是在BA提出创建分支B
  3. 拉尖从分支A提交到使用git cherry-pick A
  4. 再次基于B分支BA使用git rebase A(与B签出)
  5. 当我运行git cherry会发生什么?它会显示樱桃采摘的提交(这意味着它不再记得提交樱桃采摘)?

如果樱桃挑选关系在rebase后结束,rebase中的-p选项是否可以修复它?还是有其他解决方案来避免它?

+1

一个ASCII图有助于理解*哪些*提交你樱桃采摘*哪里*。 – Jubobs 2014-09-24 17:42:36

+0

我给出了一个人为的但简单的例子。我不是ASCII艺术方面的专家。动用你的想象力。 – 2014-09-24 17:48:40

+1

可能重复的[为什么在樱桃选择后不重复应用相同的提交?](http://stackoverflow.com/questions/14509878/why-does-a-rebase-after-a-cherry-pick - 未申请最相同的提交,两次) – Basilevs 2014-09-24 18:08:37

回答

1

它不会在平凡的情况下显示冲突 - 当挑选出来的变化不会受到重新变化的影响(在同一行范围内没有变化)。

在所有其他情况下会有冲突。

唯一能找到,会发生什么的方法是尝试这样做(在一个单独的分支中)。

这里是一个book解释:

如果上游分支已经包含所做的改变(例如, 因为你邮寄其上游施加贴片),则该 提交将被跳过。例如,运行git变基上 以下历史主(其中A”和A引入同一组 的变化,但有不同的提交者信息):

 A---B---C topic 
    /
D---E---A'---F master 

将导致:

   B'---C' topic 
      /
D---E---A'---F master