在Git中合并但覆盖更改

61

当我将一个分支合并到主分支(master)时,经常会出现合并冲突。有没有一种方法可以合并分支并只覆盖当前分支中的内容?


你的意思是像在 SVN 中一样 - 使用他们的版本? - stdcall
我自动选择合并一侧的经验从来不好。此外,解决合并冲突的目的不就是在删除他们的更改之前检查其他人在相同行附近所做的更改吗? - KristofMols
4
是我最初在本地创建了这个分支...这比遍历文件并删除冲突要快。 - John Hunt
3个回答

80

在您的git merge命令中添加-X ours参数。

假设您正在本地分支中工作,然后想要合并master中的内容:

git merge -X ours master

另一方面,如果您在 master 分支中并希望将您的本地分支合并到 master 中,则 @elhadi 正确地建议您使用 theirs

git merge -X theirs somebranch

1
@elhadi 我的理解是John Hunt想要推动他自己的工作,而不是他们的。 - kmkaplan
1
是的,它是一个本地分支。例如,我一直在某个分支上工作,并希望将该分支文件合并/替换为主分支上的文件。 - John Hunt
仍然会出现“文件将被合并覆盖”的错误,而不是使用“-X theirs”覆盖它们。 - feeela
有些文件保持原样,不确定为什么。 - Ricky Levi

9

如果想要覆盖您的分支中的文件并使用他们的代码,您应该执行以下操作:

git merge -X theirs {remote/branch} --> example:origin/master

1
在这里添加--strategy=recursive是什么意思? - red888
给我返回 merge: origin/master - not something we can merge - Ricky Levi
我认为你的远程不存在,请参考这个主题:https://dev59.com/GWQn5IYBdhLWcg3wZGd4 - elhadi dp ıpɐɥןǝ

0

我发现合并操作并不能使目标分支成为源分支的镜像拷贝。

如果这正是你想要的,为了让分支100%同步,我使用了以下步骤:

git merge -X theirs somebranch
git reset somebranch --hard

这将重置当前分支状态为somebranch合并后的HEAD状态。在某些情况下,如果您的工作目录存在未提交的文件,则还可以清理工作目录,整个过程如下:

git merge -X theirs somebranch
git reset somebranch --hard
git clean -f

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接