如何在我的 cherry pick 命令中包含我的第一次提交?
How do I include my first commit in my cherry pick command?
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` 之间大约有 10 次提交
- 所以我创建了一个新分支
NewApple
,它是从 master
的较新版本中分离出来的,其中包含较新的提交。
- 然后我从
Apple
中挑选了提交到 NewApple
上,就像这样 git cherry-pick ABC..XYZ
- 但是,当完成并提交到我的远程存储库时,我注意到
ABC
没有包含在内。它之后的所有内容,包括 XYZ
都被放到了 NewApple
.
- 我希望能够提交
ABC
作为我的精选的一部分,而不引用 Apple
中它之前的提交。恐怕如果我这样做,我将无法获得 Apple
中的所有提交,或者它会尝试合并随机的旧 master
提交到较新版本的 master 之上。
... git cherry-pick ABC..XYZ
[but] I want ABC
to be included in my commits to the current branch. Do I have to reference the commit before ABC
?
简短回答:是的。
更长的答案种类:Git 有相应的语法,因为这是一个很常见的要求。任何适合标识一个特定提交的名称,例如 master
或 a123456
,都可以加上 ^
或 ~
字符后跟数字作为后缀。默认数字仅为 1,因此:
master^
或
master~
表示"the commit before the one selected by the name master
"。
在这种情况下,您可以这样写:
git cherry-pick ABC^..XYZ
请注意,Windows-y 命令行解释器倾向于将 ^
视为转义字符,需要使用 ABC^^..XYZ
或 "ABC^..XYZ"
输入命令,因此您可能更喜欢~
。两者都在这里工作。
(更具体地说,^<em>number</em>
表示第 number-th parent,而 ~<em>number</em>
告诉 Git 倒数那么多 first-parents。所以 master~3
表示与 master^1^1^1
相同。由于 1
是默认数字,因此您也可以将其写为 master^^^
。还有许多其他方法可以识别提交,所有这些都在 the gitrevisions documentation 中进行了概述。 )
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` 之间大约有 10 次提交
- 所以我创建了一个新分支
NewApple
,它是从master
的较新版本中分离出来的,其中包含较新的提交。 - 然后我从
Apple
中挑选了提交到NewApple
上,就像这样git cherry-pick ABC..XYZ
- 但是,当完成并提交到我的远程存储库时,我注意到
ABC
没有包含在内。它之后的所有内容,包括XYZ
都被放到了NewApple
. - 我希望能够提交
ABC
作为我的精选的一部分,而不引用Apple
中它之前的提交。恐怕如果我这样做,我将无法获得Apple
中的所有提交,或者它会尝试合并随机的旧master
提交到较新版本的 master 之上。
...
git cherry-pick ABC..XYZ
[but] I wantABC
to be included in my commits to the current branch. Do I have to reference the commit beforeABC
?
简短回答:是的。
更长的答案种类:Git 有相应的语法,因为这是一个很常见的要求。任何适合标识一个特定提交的名称,例如 master
或 a123456
,都可以加上 ^
或 ~
字符后跟数字作为后缀。默认数字仅为 1,因此:
master^
或
master~
表示"the commit before the one selected by the name master
"。
在这种情况下,您可以这样写:
git cherry-pick ABC^..XYZ
请注意,Windows-y 命令行解释器倾向于将 ^
视为转义字符,需要使用 ABC^^..XYZ
或 "ABC^..XYZ"
输入命令,因此您可能更喜欢~
。两者都在这里工作。
(更具体地说,^<em>number</em>
表示第 number-th parent,而 ~<em>number</em>
告诉 Git 倒数那么多 first-parents。所以 master~3
表示与 master^1^1^1
相同。由于 1
是默认数字,因此您也可以将其写为 master^^^
。还有许多其他方法可以识别提交,所有这些都在 the gitrevisions documentation 中进行了概述。 )