强制Git在合并过程中始终选择较新的版本?


103

假设我mergegit并且存在合并冲突。

我的问题是:如何强制git在发生冲突时始终选择新版本的代码,这样我就无需手动解决冲突了?



但是我确实想进行合并(而不是覆盖提交),但是还要自动解决冲突。
bartek 2012年

Answers:


188

它并非完全是“较新的”版本,但是您可以使用告诉git总是更喜欢当前分支上的版本git merge branch -X ours,或者更喜欢使用正在合并的分支的版本git merge branch -X theirs

来自man git-merge

我们的:

通过支持我们的版本,此选项可以强制自动解决冲突的块。与其他树不冲突的更改将反映到合并结果中。对于二进制文件,全部内容都是从我们这边获取的。

他们的:

这与“我们的”相反。


9
ours- theirs!! 只需说一遍,您就知道命令的作用!我爱Git!:D
Haywire 2013年

14
注意:如果您已经使用过git merge branch,则需要git merge --abort先进行操作。
John Dvorak 2014年

1
对我不起作用。它仍然中止合并。error: The following untracked working tree files would be overwritten by merge:我什至不知道为什么这些文件最初位于此分支中,但是它们应该被覆盖,而git拒绝。
mcv 2014年

2
如果未跟踪它们,则需要git add先将它们删除(或)。阅读有关的信息git clean,可能会对您有所帮助。
Renato Zannon 2014年

运行后git merge ours,如果有一些冲突文件,会有日志吗?我可以追踪的git merge ours吗?
2014年

19

我用这个

git fetch --prune
git reset --hard origin/master

2
当我只想用master分支覆盖时,此解决方案帮助我解决了未合并的冲突。我使用git reset --hard master(来自本地)
Juan Mendez
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.