两个分支master
和foo
指向同一个根提交a,工作树只有一个文件bar.txt
。
$cat bar.txt
11111
22222
33333
44444
55555
Commit B to master
,在bar.txt
中增加一行。
$cat bar.txt
11111
22222
33333
aaaaa
44444
55555
然后Commit C to master
,删除aaaaa
,在bar.txt
的其他地方添加bbbbb
。
$cat bar.txt
11111
bbbbb
22222
33333
44444
55555
运行git format-patch -1 C
生成Commit C的补丁,假设其名称为0001-bbbbb.patch
。
现在检查foo
。git am 00001-bbbbb.patch
或git apply 00001-bbbbb.patch
将因冲突而失败,如预期的那样。然而,git cherry-pick C
将成功,没有任何问题。
从这个问题我了解到,git am
或git apply
也将成功的参数-3
或--3way
在这种情况下。然而,我找不到任何关于git cherry-pick
的三路合并的配置或参数。
问题:
在这种情况下,如何禁用git cherry-pick
的三向合并,以便挑选失败?
您可以在使用git cherry-pick
时指定合并策略。这里列出了可用的策略:https://git-scm.com/docs/merge-strategies。
编辑:octopus
实际上不是正确的合并策略,在这种情况下,因为它也失败了一个有效的樱桃选择(如@Elpiekay指出)
我不确定任何其他有效的樱桃选择合并策略(和选项)将导致与上面的git apply
相同的行为。我很高兴被证明是错的!
我想你可能想要
octopus
,所以你的命令是:git cherry-pick -strategy=octopus C
当我测试它时,它给了我这个错误:
错误:could not apply 62f20c5…C