git接受他们/我们的并成功合并代码

时间:2019-03-07 22:38:10

标签: git git-merge git-merge-conflict

假设在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: 成功合并(THREEFive),并且在发生冲突的情况下,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解决冲突。

1 个答案:

答案 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之类的外部合并工具的方式。)