假设在feature
Git分支上重新建立master
Git分支时存在冲突:
git init
echo -e "one\ntwo\nthree\nfour\nfive" > foo
git add foo
git commit -m a
echo -e "ONE\ntwo\nTHREE\nfour\nfive" > foo
git commit -a -m b
git checkout -b feature HEAD^
echo -e "One\ntwo\nthree\nfour\nFive" > foo
git commit -a -m c
git rebase master
有冲突的文件foo
是:
<<<<<<< HEAD
ONE
=======
One
>>>>>>> c
two
THREE
four
Five
如何从命令行获取包含以下内容的文件foo_master
:
成功合并(THREE
和Five
),并且在发生冲突的情况下,master
代码(ONE
)
ONE
two
THREE
four
Five
请注意,它与git checkout --ours foo
不同,后者不包含
来自feature
的修改成功应用(Five
):
ONE
two
THREE
four
five
我还想让对应文件foo_feature
包含
feature
代码在发生冲突的情况下,但具有master
的修改
已成功应用(ONE
):
One
two
THREE
four
Five
然后我的目标是垂直vimdiff
foo_master
个文件,然后
foo_feature
解决冲突。
答案 0 :(得分:1)
使用 float line_gap = SkScalarToFloat(metrics.fLeading);
font_metrics_.SetLineGap(line_gap);
font_metrics_.SetLineSpacing(lroundf(ascent) + lroundf(descent) +
lroundf(line_gap));
两次,一种情况下使用git merge-file
,另一种情况下使用--ours
。 (请注意,它们与--theirs
不同,但更像-s ours
,但它们仅适用于一组三个输入文件。)
您将需要所有三个输入文件,但是在冲突合并期间它们将可用,因为这三个文件都在索引中,分别位于阶段1(基础),阶段2(我们)和阶段3(它们)。使用-X ours
一次提取所有三个。请注意,这意味着git checkout-index --stage=all
,因此您将获得三个文件名,其中包含三个输入文件的三个副本,这些文件从索引中复制出来,成为可用格式。
(这是--temp
获取文件的三个副本以馈送到vimdiff之类的外部合并工具的方式。)