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

mun*_*air 0 git cherry-pick

悬崖笔记版本

  • 假设我想运行此命令:git cherry-pick ABC..XYZ。我想ABC被包含在我对当前分支的提交中。我必须先参考提交ABC吗?

长版

  • 所以我有分支机构masterAppleNewApple
  • Apple建立在一个非常旧的版本上,master但只适用于十几个文件,这些文件是在文件夹中实现的,其余文件master并未真正触及。
  • Apple有提交ABCBCDXYZ。这些是Apple. 请注意BCDXYZ. These commits were NEVER commited tomaster`之间大约有 10 次提交
  • 因此,我创建了一个新分支NewApple,它是从master具有较新提交的较新版本分拆出来的。
  • 然后我从挑选提交AppleNewApple像这样git cherry-pick ABC..XYZ
  • 但是,当完成并提交到我的远程存储库时,我注意到它ABC没有包含在内。在它之后的所有东西都XYZ被放到了NewApple.
  • 我希望能够在ABC不引用Apple. 恐怕如果我这样做了,我将无法获得所有提交,Apple或者它会尝试在master新版本的 master 之上随机合并较旧的提交。

tor*_*rek 5

... git cherry-pick ABC..XYZ[但是] 我想ABC被包含在我对当前分支的提交中。我必须先参考提交ABC吗?

简短的回答:是的。

更多种类的答案:Git 有一个语法,因为它是一个常见的要求。任何适合识别特定提交的名称,例如mastera123456,都可以以^~字符后跟数字为后缀。默认数字仅为 1,因此:

master^
Run Code Online (Sandbox Code Playgroud)

或者

master~
Run Code Online (Sandbox Code Playgroud)

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

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

git cherry-pick ABC^..XYZ
Run Code Online (Sandbox Code Playgroud)

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

(更具体地说,表示第 -th 个父代的数量,while告诉 Git 倒数第一代父代的数量。所以表示与 相同。由于是默认数量,您也可以这样写。还有很多方法可以识别提交,所有这些都在gitrevisions 文档中概述。)^number~numbermaster~3master^1^1^11master^^^