有没有办法将分支A合并到B中并用B替换B中的任何内容,无论是否存在冲突?
答案 0 :(得分:1)
您可以使用-X
标记来指定首选项,ours
或theirs
。
git merge <branch> -X ours
将始终更喜欢您当前所在分支的版本,而git merge <branch> -X theirs
则更喜欢要合并的分支版本。
从man git-merge
查看以下内容以获取更多详细信息:
<强>我们强>
此选项通过支持我们的版本,强制冲突的帅哥干净利落地自动解决。来自与我们方不冲突的其他树的更改将反映到合并结果中。对于二进制文件,整个内容都来自我们这边。
<强>他们强>
这与我们的#34;相反。
因此,在您的情况下,在分支git merge B -X ours
上运行A
应该可以解决问题!
答案 1 :(得分: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
README`。
现在,如果你要求git将他们的分支合并到我们的分支中,文件conflict.txt
中就会发生冲突,因为git不知道如何处理冲突的更改。使用-X ours
告诉git:如果发生冲突,请使用我们的版本,因此提交M
将保留我们的更改并放弃更改。
另一方面,没有与README
冲突,因为我们没有更改它。只有他们更改了README
。使用-X ours
,提交M
将保留其更改。
然后,使用-s ours
,git也会保留我们的README
版本。
根据您的问题,我不清楚,您需要哪些 - 或者可能是第三种非内置替代品。
答案 2 :(得分:0)