强制 Git 在合并期间始终选择较新的版本?
Posted
技术标签:
【中文标题】强制 Git 在合并期间始终选择较新的版本?【英文标题】:Force Git to always choose the newer version during a merge? 【发布时间】:2012-11-15 16:06:02 【问题描述】:假设我merge
git 存在合并冲突。
我的问题是:如何强制 git 始终选择冲突代码的较新版本,这样我就不需要手动解决冲突?
【问题讨论】:
git pull from remote.. can I force it to overwrite rather than report conflicts? 的可能重复项 但我确实想做一个合并(不是覆盖提交),但还想自动解决冲突。 【参考方案1】:看看我在Git timestamp based automated sync的回答
基本上我们必须进行手动时间戳比较。我认为git merge
没有任何内置实用程序。
【讨论】:
【参考方案2】:我用这个,
git fetch --prune
git reset --hard origin/master
【讨论】:
当我只想用 master 分支覆盖时,这个解决方案帮助我修复了未合并的冲突。我使用 git reset --hard master(来自本地) 除非您确切知道它的作用,否则不要使用它,它是初学者放松大量工作的好方法。这根本不会合并代码,更不用说选择最新的代码了。它只是用远程仓库中的内容覆盖分支中的所有内容。这是一个非常有用的 cmd(我在修补东西后一直使用它来尝试不同的东西),但在使用它之前请确保您的本地分支中没有要保存的新代码。【参考方案3】:它并不完全是“较新”的版本,但您可以使用 git merge branch -X ours
告诉 git 始终更喜欢当前分支上的版本,或者使用 git merge branch -X theirs
更喜欢正在合并的分支的版本。
来自man git-merge
:
我们的:
此选项强制通过支持我们的版本来干净地自动解决冲突的大块。与其他树不同的变化 与我方的冲突反映到合并结果上。对于二进制文件,全部内容都取自我们这边。
他们的:
这与“我们的”相反。
【讨论】:
ours
- theirs
!!只要说出来,您就会明白该命令的作用!我爱吉特! :D
注意:如果您已经使用过git merge branch
,则需要先git merge --abort
,然后才能执行此操作。
对我不起作用。它仍然中止合并。 error: The following untracked working tree files would be overwritten by merge:
我什至不知道为什么这些文件首先在这个分支中,但是它们应该被覆盖,并且git拒绝。
如果它们未被跟踪,您需要先删除(或git add
)它们。阅读一些关于 git clean
的内容,它可能会对您有所帮助。
运行git merge ours
后,如果有冲突文件,会有日志吗?我可以跟踪git merge ours
吗?以上是关于强制 Git 在合并期间始终选择较新的版本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 mergetool 期间选择整个 REMOTE 文件?
在较新的 PHP 版本中使用具有相同 CSS 选择器名称的 PHP 变量时出现问题