由于合并冲突,git cherry pick失败

由于合并冲突,git cherry pick失败,git,github,Git,Github,我正在使用git cherry pick向特定分支添加特定的commit sha: git cherry-pick 12345 error: commit 12345 is a merge but no -m option was given. fatal: cherry-pick failed (假装12345是提交SHA。) 我尝试过其他几种变体,但都失败了: git cherry-pick 12345 -m git cherry-pick -m 12345 etc. 不确定如何解释错误

我正在使用
git cherry pick
向特定分支添加特定的commit sha:

git cherry-pick 12345
error: commit 12345 is a merge but no -m option was given.
fatal: cherry-pick failed
(假装12345是提交SHA。)

我尝试过其他几种变体,但都失败了:

git cherry-pick 12345 -m
git cherry-pick -m 12345
etc.

不确定如何解释错误消息或找出修复方法。有什么想法吗?

是的,传递给git的提交顺序确实很重要

假设您的第一次提交
A
引入了一个新行,而下一次提交
B
修改了同一行。如果提交的顺序错误,那么提交
B
没有要修补的内容,即使没有失败,那么提交
A
会将未修补的行添加回来,可能不是您想要的,对吗

关于合并提交,如果它引入了更改,那么它也必须包括在内


此外,通常您不会向
git cherry-pick
传递一长串提交,您可以使用修订范围语法指定一系列提交,请参阅手册中的示例部分:

您是否知道您正在cherry-pick合并提交,是否确实要这样做?您可以指定
-m
并选择要遵循的父级,但可能您根本不打算这样做。感谢@TimBiegeleisen(+1)-我实际上有一长串
git cherry pick
命令要运行,这是列表中的第四个,也是第一个失败的,前三个成功。当运行
cherry pick
时,提交/命令的顺序重要吗?@smeed这里的问题不是顺序,而是合并提交。好的@TimBiegeleisen所以我想我听说跳过合并提交是可以的,因为它不适用于我在这里尝试做的事情(cherry pick)?看起来你完全改变了你的问题。永远不要那样做。改为问一个新问题。您可以通过单击“edited…ago”回滚您的问题。如果我的提交是合并提交,并且我的SHA编号是
12345
我需要在此处使用的确切命令是什么,请感谢@ryenus?因为我试过
git cherry pick-m 12345
git cherry pick 12345-m
但都失败了…@smeeb可能是
git cherry pick 12345-m 1
git cherry pick 12345-m 2
1和
2是指
12345的第一个和第二个父项。但在您的情况下,您不需要樱桃选择合并提交。谢谢@ElpieKay(+1)-我如何将合并提交应用于我的分支(如果,如您所说,我不需要或不能樱桃选择合并提交)?@smeeb如果您樱桃选择了它的两个或所有父级,那么就忽略它。在这种情况下,当您运行
git cherry pick 12345-m1
git cherry pick 12345-m2
时,它会返回类似
的结果,可能是由于冲突解决的原因,上一个cherry pick现在为空。非冲突合并提交不会引入更改。这些变化来自它的父母。因此,如果我们只是选择合并提交,我们需要选择要使用的父级。但是
-m
似乎放弃了第n个父级的更改。@smeeb,类似于
git diff commit\u before\u merge\u commit | git apply-
,您应该知道合并前commit\u应该使用哪个父级,以防
git cherry pick-m
不是那么明显。