由于合并冲突,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
不是那么明显。