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

问题描述 投票:0回答:1

Cliffnotes版本

  • 假设我要运行此命令:git cherry-pick ABC..XYZ。我希望ABC包含在我对当前分支的提交中。我必须在ABC之前引用提交吗?

长版

  • 所以我有分支masterAppleNewApple
  • Apple建立在一个非常老版本的master上,但只对十几个文件进行了处理,这些文件是在其他master没有真正触及的文件夹上实现的。
  • Apple承诺ABCBCDXYZ。这些是Apple独有的承诺。请注意,BCDXYZ. These commits were NEVER commited tomaster`之间约有10个提交
  • 所以我创建了一个新的分支NewApple,它是从较新版本的master中剥离出来的,其中包含更新的提交。
  • 然后我从qazxsw poi挑选了一些提交到qazxsw poi的提交,就像这样qazxsw poi
  • 但是,当完成并提交到我的远程存储库时,我注意到Apple未包含在内。之后的一切,包括NewApple都被放到git cherry-pick ABC..XYZ上。
  • 我希望能够将ABC作为我的樱桃选择的一部分,而不引用XYZ之前的提交。我担心,如果我这样做,我将不会获得NewApple中的所有提交,或者它将尝试合并在较新版本的master之上的随机旧ABC提交。
git cherry-pick
1个回答
4
投票

... Apple [但]我希望Apple包含在我对当前分支的提交中。我必须在master之前引用提交吗?

简短回答:是的。

更长的答案:Git有这样的语法,因为它是如此常见的要求。任何适合识别一个特定提交的名称,例如git cherry-pick ABC..XYZABC,都可以加上ABCmaster字符,后跟数字。默认数字只有1,因此:

a123456

要么

^

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

在这种情况下,您可能会写:

master^

请注意,Windows-y命令行解释器倾向于使用master~ 做一些奇怪的事情,所以你可能更喜欢master。这两个都在这里工作。

(更具体地说,git cherry-pick ABC^..XYZ 意味着第一个父母,而^告诉Git计算许多第一父母。所以~意味着与^number相同。由于~number是默认数字,你也可以写为master~3。那里还有很多方法可以识别提交,所有这些都在master^1^1^1中列出。)

© www.soinside.com 2019 - 2024. All rights reserved.