首页 > 解决方案 > git pull 后合并冲突:忘记本地版本,取远程版本……怎么样?

问题描述

我克隆了一个 repo,从中构建了一个固件,并且不时地“git pull”以保持最新状态。

这次我遇到了一个非常大的文件(json)的合并冲突,事实证明,它是在构建固件时自动创建的。所以冲突是存在的——从 git 的角度来看——但它们并不重要。我只是希望 repo 中的版本替换本地版本。

我试过git merge -s theirs了,但这个策略不为人所知git merge。我从物理上删除了文件以获取新副本……不……git比我聪明。

我怎样才能“忘记那个文件并将你拥有的副本发送给我”到远程 git?

标签: git

解决方案


如果对于单个文件或仅部分冲突文件,请使用git checkout --theirs -- path/to/filegit checkout --ours -- path/to/file(取决于您想要的版本)。

如果您基本上想丢弃一个分支的所有更改并继续处理另一个分支的文件,但仍保留历史记录,请参阅如何“覆盖”而不是“合并” Git 中另一个分支上的分支?(剧透:没有“他们的”策略,只有“我们的”策略)。

如果您仍想合并所有可以合并的更改,但在发生冲突的情况下解决与其他分支版本的冲突,请使用“递归”策略(默认)和“他们的”策略选项:git merge -X theirs branch_to_merge.

如果您不关心本地分支的历史记录,只需切换到另一个分支并删除您的本地分支。


推荐阅读