2015-10-16 63 views

回答

0

你可以这样做:

$ git checkout branchA 
$ git merge -s ours branchB 

这一合并被称为 “我们的” 合并策略。

查看更多关于合并文档here

1

您可以使用-X标志来指定更喜欢哪个,ourstheirs

git merge <branch> -X ours将始终偏好您当前所在分支的版本,而git merge <branch> -X theirs会偏好被合并分支的版本。

结帐从man git-merge下面了解更多详情:

我们

此选项强制冲突的帅哥是自动解决通过支持我们的版本干净。来自另一棵与我们不冲突的树的变化反映到合并结果。对于二进制文件,整个内容都是从我们这边拿来的。

他们

这是 “我们的” 相反。

所以在你的情况下,运行git merge B -X ours当分支A应该做的伎俩!

1

已发布的两个答案(-X ours-s ours)都是正确的,或者等价地,都是错误的。这取决于你想要的结果。

下面是一个简单而具体的例子。假设我们有以下几点:

  O 
     / \ 
... - B  M 
     \ /
      T 

其中B是公共基础犯,O是“我们”的承诺,T是“他们的”承诺,并M是合并后的结果(即我们想要生成)。

进一步假设在提交B,文件conflict.txt说:

I am a file 
that contains 
some text. 

另一个文件,README,完全是空的。

在提交O时,我们将第二行更改为that has而不是that contains。 (也就是说,我们改变了第二行。)我们根本没有碰到README

在承诺T,他们改变了第二行阅读that used to have(That is, they changed the word "contains" to "still contains".) They also added some text to自述文件`。

现在,如果您要求git将其分支合并到我们的分支中,文件conflict.txt中将存在冲突,因为git不知道如何处理冲突的更改。使用-X ours告诉git:如果发生冲突,请使用我们的版本,所以提交M将保留我们的更改并放弃其更改。

另一方面,有没有README冲突,因为我们没有改变它。他们只有变更了README。与-X ours,提交M将保持其变化。

然而,使用-s ours,git也会保留我们的版本README

根据你的问题,我不清楚这些,或者你想要的第三种非内置替代选项。