如何将我的第一次提交包含在我的樱桃拣选命令中?



Cliffnotes version

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

长版本

  • 所以我有分支masterAppleNewApple
  • Apple建立在非常旧的master版本之上,但只处理了十几个文件,这些文件是在master其余部分没有真正接触的文件夹上实现的。
  • Apple已提交ABCBCDXYZ。这些是Apple独有的提交。请注意,BCDXYZ. These commits were NEVER commited tomaster 之间大约有 10 次提交。
  • 所以我做了一个新的分支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 有一个语法,因为它是如此常见的要求。 任何适合标识一个特定提交的名称,如mastera123456,都可以用^~字符后跟数字作为后缀。 默认数字仅为 1,因此:

master^

master~

表示"由名称master选择的提交之前提交"。

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

git cherry-pick ABC^..XYZ

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

(更具体地说,^number表示第1 个父级,而~number告诉 Git 数回那许多第一代父母。 所以master~3的意思和master^1^1^1一样。 由于1是默认数字,因此您也可以将其写为master^^^。 还有更多方法可以识别提交,所有这些都在 gitrevisions 文档中进行了概述。

相关内容

  • 没有找到相关文章

最新更新