Git樱桃挑选系列

时间:2015-04-24 10:28:21

标签: git git-cherry-pick

我如何挑选提交C4C5

GitTree

我已尝试git cherry-pick C4..C5,但我只获得了C4。 我想我真的不明白这个范围的事情是如何起作用的。

2 个答案:

答案 0 :(得分:3)

TL; DR版本:C4^..C5

除非命令专门处理它(并且git cherry-pick没有),否则范围表达式意味着“通过右侧名称识别/查找所有提交,减去左侧名称识别/可查找的所有提交”。在这种情况下,C5标识提交0到5(包括0和5),C4标识0到4(包括0和4)。从第一组中减去第二组提交只留下C5

另一种看待它的方法是,如果提交相关,则会得到“半开间隔”,就像(3, 7]中的整数是4 5 6 7一样。

与半开整数区间一样,通常的简单技巧是从后退一步开始。由于C4的(第一个)父级是C4^C4^..C5可以解决这个问题,就像(2, 7]会得到3 4 5 6 7一样。

(如果没有父项,则会失败,即左侧是根提交。在这种情况下,您需要一些替代策略。一些命令使这更容易,一些使其更难,但是现在我们可以忽略这个问题。:-))

答案 1 :(得分:1)

在这种特定情况下,您不需要使用范围。

来自man git-cherry-pick的示例:

 git cherry-pick master~4 master~2
           Apply the changes introduced by the fifth and third last commits pointed to by master and create 2 new commits with these changes.

所以对你:

git cherry-pick C4 C5