如何在vimdiff中仅合并远程更改?

4

我在fork了一个Github存储库后对其进行了一些更改。这是相当久以前的事情了,现在upstream分支已经更新了很多。因此,我想将那些远程更改合并到我的forked存储库中。

我只在一个文件中遇到了合并冲突。我继续使用mergetool运行了vimdiff来解决这些问题。 我只想合并远程更改并丢弃本地更改。

但是,在该文件中有太多冲突差异。逐个选择要合并的更改非常繁琐。

  • 是否有快捷方式可以在该文件中的所有冲突上运行:diffget RE
  • 也许有一种方法可以在git中仅选择一个分支的差异而舍弃另一个分支?
2个回答

11

使用 Vim 的全局选择,您可以将所有差异替换为 LOCAL、BASE 或 REMOTE。

  1. 转到文件的第一行
:1
进入可视模式
 <Shift>-V
前往文件底部,选择所有行。
G
在所有行上执行diffget命令。
:diffget REMOTE

对于那些想要减少6个按键的人,:diffg RE 对于最后一个命令已经足够了。对于那些只想要本地更改的人,请使用 :diffget LOCALdifg LO - Kit

2

在git中合并有两个选项,可以默认使用远程更改(theirs)或本地更改(ours)。

如果您想仅解决合并中的远程更改冲突,则应执行以下操作:

git merge -Xtheirs <branch>

如果您想仅解决合并中本地更改的冲突,可以执行以下操作:
git merge -Xours <branch>

您可以从git高级合并文档中了解更多关于高级合并策略的信息。


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