悬崖笔记版本
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 tomaster`之间大约有 10 次提交NewApple,它是从master具有较新提交的较新版本分拆出来的。Apple到NewApple像这样git cherry-pick ABC..XYZABC没有包含在内。在它之后的所有东西都XYZ被放到了NewApple.ABC不引用Apple. 恐怕如果我这样做了,我将无法获得所有提交,Apple或者它会尝试在master新版本的 master 之上随机合并较旧的提交。...
git cherry-pick ABC..XYZ[但是] 我想ABC被包含在我对当前分支的提交中。我必须先参考提交ABC吗?
简短的回答:是的。
更多种类的答案:Git 有一个语法,因为它是一个常见的要求。任何适合识别特定提交的名称,例如master或a123456,都可以以^或~字符后跟数字为后缀。默认数字仅为 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^^^