Git 如何在cherry-pick命令中包含第一次提交?

Git 如何在cherry-pick命令中包含第一次提交?,git,cherry-pick,Git,Cherry Pick,Cliffnotes版本 假设我想运行这个命令:git cherry pick ABC..XYZ。我希望ABC包含在我对当前分支的提交中。我必须在ABC之前引用提交吗 长版本 所以我有分支master,Apple和NewApple Apple是建立在非常旧版本的master上的,但只处理了十几个文件,这些文件是在文件夹上实现的,而master的其余部分实际上并没有触及这些文件夹 Apple有提交的ABC、BCD和XYZ。这些是苹果公司独有的提交。请注意,BCD和XYZ之间大约有10次提交。

Cliffnotes版本

  • 假设我想运行这个命令:
    git cherry pick ABC..XYZ
    。我希望
    ABC
    包含在我对当前分支的提交中。我必须在ABC之前引用提交吗
长版本

  • 所以我有分支
    master
    Apple
    NewApple
  • Apple
    是建立在非常旧版本的
    master
    上的,但只处理了十几个文件,这些文件是在文件夹上实现的,而
    master
    的其余部分实际上并没有触及这些文件夹
  • Apple
    有提交的
    ABC
    BCD
    XYZ
    。这些是苹果公司独有的提交。请注意,
    BCD
    XYZ之间大约有10次提交。这些提交从未提交给
    master`
  • 因此,我创建了一个新分支
    NewApple
    ,它是从
    master
    的较新版本衍生出来的,这些版本具有较新的提交
  • 然后我从
    Apple
    中选择提交,将其放到
    NewApple
    上,就像这样
    git cherry pick ABC..XYZ
  • 但是,当完成并提交到我的远程存储库时,我注意到没有包括
    ABC
    。之后的一切,包括
    XYZ
    都被放到了
    NewApple
  • 我希望能够提交
    ABC
    ,作为我的樱桃选择的一部分,而无需参考
    Apple
    中的提交。我担心如果我这样做,我将无法在
    Apple
    中获得所有提交,或者它将尝试在较新版本的master上随机合并较旧的
    master
    提交
git cherry pick ABC..XYZ
[但是]我希望
ABC
包含在我对当前分支的提交中。我必须在ABC之前引用提交吗

简短回答:是的

答案更详细:Git对此有一个语法,因为这是一个非常常见的需求。任何适合于识别一个特定提交的名称,例如
主提交
a123456
,都可以在
^
~
字符后加数字作为后缀。默认数字仅为1,因此:

master^

表示“在名称
master
选择的提交之前提交”

在这种情况下,您可以这样写:

git cherry-pick ABC^..XYZ
请注意,Windows-y命令行解释器倾向于将
^
视为转义字符,需要使用
ABC^^..XYZ
“ABC^..XYZ”
输入命令,因此您可能更喜欢
~
。两个都在这里工作

(更具体地说,
^number
表示第th个父项的数字,而
~number
告诉Git倒数第一个父项的数量。因此
master~3
master^1^1^1
的意思相同。由于
1
是默认的数字,您也可以将其写成
master^^^
。有更多的方法来识别(请参阅中概述的所有内容。)

git cherry pick ABC..XYZ
[但是]我希望
ABC
包含在我对当前分支的提交中。我必须在
ABC
之前引用提交吗

简短回答:是的

答案更详细:Git对此有一个语法,因为这是一个常见的要求。任何适合识别一个特定提交的名称,如
master
a123456
,都可以在
^
~
字符后加数字作为后缀。默认数字仅为1,因此:

master^

表示“在名称
master
选择的提交之前提交”

在这种情况下,您可以这样写:

git cherry-pick ABC^..XYZ
请注意,Windows-y命令行解释器倾向于将
^
视为转义字符,需要使用
ABC^^..XYZ
“ABC^..XYZ”
输入命令,因此您可能更喜欢
~
。任何一种方法都适用于此


(更具体地说,
^number
表示第th个父项的数字,而
~number
告诉Git倒数第一个父项的数量。因此
master~3
master^1^1^1
的意思相同。由于
1
是默认的数字,您也可以将其写成
master^^^
。有更多的方法来识别这是我所要找的东西。我学到了很多东西。“安迪:对我来说,这很奇怪,因为我不使用Windows。”——而且,我使用的所有编程语言都使用反斜杠作为转义(C、C++、GO、Python等)。但是我会编辑。这正是我要找的东西。我学到了很多东西。“安迪:对我来说,这很奇怪,因为我不使用Windows。”——而且,我使用的所有编程语言都使用反斜杠作为转义(C、C++、GO、Python等)。但我会编辑。