我该如何挑选提交记录 C4
和 C5
?
我尝试过使用 git cherry-pick C4..C5
,但是我只得到了 C4
。我认为我并不真正理解这个范围的含义。
我该如何挑选提交记录 C4
和 C5
?
我尝试过使用 git cherry-pick C4..C5
,但是我只得到了 C4
。我认为我并不真正理解这个范围的含义。
简而言之:C4^..C5
除非命令对其进行特殊处理(git cherry-pick
不包括在内),范围表达式的意思是“获取由右侧名称标识/可查找到的所有提交,减去由左侧名称标识/可查找到的所有提交”。在本例中,C5
标识了从0到5(含)的提交,而C4
标识了从0到4(含)的提交。从第一个集合中减去第二个集合后,您只剩下C5
。
另一种看待它的方式是,如果提交有关,则可以获得“半开区间”,就像整数(3,7]
中的 4 5 6 7
一样。
与半开整数区间一样,通常的易于处理的技巧是从一步向后开始。由于C4
的(第一个)父级是C4^
,因此C4^..C5
就足够了,就像(2,7]
可以获得3 4 5 6 7
一样。
(如果没有父级,即左侧是根提交,则需要某种替代策略。有些命令使这更容易,有些则更难,但现在我们可以忽略这个问题。:-))
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
--no-ff
强制进行真正的合并)。然而,如果您确实需要,可以利用在A..B
中没有要求A
是B
的祖先的事实。例如,如果b1
指向提交C5
,并且您想要从那里返回到根的所有提交,减去任何已经在HEAD
上的提交,则HEAD..b1
可以解决问题。 - torek