两个分支master
和foo
指向相同的根提交A.工作树只有一个文件bar.txt
。
$cat bar.txt
11111
22222
33333
44444
55555
将提交B设为master
,在bar.txt
中添加一行。
$cat bar.txt
11111
22222
33333
aaaaa
44444
55555
然后将提交C设为master
,删除aaaaa
并在bbbbb
中的其他位置添加bar.txt
。
$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
会毫无问题地成功。
从question我知道git am
或git apply
在这种情况下也会使用参数-3
或--3way
获得成功。但是我找不到关于git cherry-pick
的三向合并的任何配置或参数。
问题:
如果在这种情况下禁用git cherry-pick
的三向合并内容,那么樱桃选择会失败?
非常感谢。
答案 0 :(得分:1)
使用git cherry-pick
时,您可以指定合并策略。此处列出了可用的策略:https://git-scm.com/docs/merge-strategies。
编辑:octopus
在这种情况下实际上并不是正确的合并策略,因为它也失败并且有一个有效的挑选(如@Elpiekay所指出的)
我不确定任何其他有效的挑选合并策略(和选项)是否会产生与上面的git apply
相同的行为。我很高兴被证明是错的!
我想你可能想要
octopus
,所以你的命令是:git cherry-pick --strategy =章鱼C
当我测试它时,它给了我这个错误:
错误:无法应用62f20c5 ... C