Cliffnotes版本
git cherry-pick ABC..XYZ
。我希望ABC
包含在我对当前分支的提交中。我是否必须在ABC
之前引用提交?长版
master
,Apple
和NewApple
。Apple
是基于master
的旧版本构建的,但只处理了十几个文件,这些文件是在master
其余部分没有真正触及的文件夹上实现的。Apple
已提交ABC
,BCD
和XYZ
。这些是Apple
独有的提交。请注意,BCD
和XYZ. These commits were NEVER commited to
master` NewApple
,它从较新版本的master
分离出来,其中包含较新的提交。Apple
提交NewApple
这样的提交git cherry-pick ABC..XYZ
ABC
未包括在内。其后的所有内容(包括XYZ
)都放在NewApple
。ABC
作为我的挑选的一部分而不引用Apple
中之前的提交。我担心,如果我这样做,我将不会在Apple
中获得所有提交,或者它会尝试在较新版本的master之上合并随机较早的master
提交。答案 0 :(得分:4)
...
<table id="chPurchaseTable"> <thead> <tr> <th>Quantity</th> <th>Product</th> <th>u/m</th> <th>Price Each</th> <th>Line Total</th> <th></th> </tr> </thead> <tbody>
[但]我希望git cherry-pick ABC..XYZ
包含在我对当前分支的提交中。我必须在ABC
之前引用提交吗?
简答:是的。
更多种类的答案:Git有这样的语法,因为它是如此常见的要求。任何适合标识某个特定提交的名称(例如ABC
或master
)都可以加上a123456
或^
个字符,后跟数字。默认数字只有1,因此:
~
或
master^
表示“在名称master~
”选择的提交之前提交。
在这种情况下,您可以写:
master
请注意,Windows-y命令行解释程序倾向于使用git cherry-pick ABC^..XYZ
做一些奇怪的事情,因此您可能更喜欢^
。这两个都在这里工作。
(更具体地说,~
表示号 - 第一个父级,而^number
则告诉Git计算许多第一个父级。所以~number
表示与master~3
相同。由于master^1^1^1
是默认数字,因此您也可以将其写为1
。还有更多方法可以识别提交,所有这些都在the gitrevisions documentation中列出。)