小编典典

如何使用 vimdiff 解决 git 合并冲突?

all

我刚刚在 git 中将一个分支合并到我的 master 中,Automatic merge failed; fix conflicts and then commit the result.现在我运行git mergetool并打开了 vimdiff,如下图所示。我不知道如何使用
vimdiff。这里的每个面板是什么意思,我应该如何着手解决合并冲突?

在此处输入图像描述


阅读 171

收藏
2022-06-24

共1个答案

小编典典

所有四个缓冲区都提供了同一文件的不同视图。左上角的缓冲区 (LOCAL) 是文件在目标分支中的外观(您正在合并的内容)。右上角的缓冲区 (REMOTE)
是文件在您的源分支(您要合并的位置)中的外观。中间缓冲区 (BASE) 是两者的共同祖先(因此您可以比较左右版本的差异)。

我可能会误解以下几点。我认为合并冲突的根源是两个文件自 BASE 以来都更改了文件的同一部分;LOCAL 将引号从双引号更改为单引号,REMOTE
进行了相同的更改,但也将背景值从颜色更改为 URL。(我认为合并不够聪明,无法注意到对 LOCAL 的所有更改也存在于 REMOTE 中;它只知道
LOCAL 自 BASE 以来在 REMOTE 具有的相同位置进行了更改)。

在任何情况下,底部缓冲区都包含您可以实际编辑的文件——他位于您的工作目录中。您可以进行任何您喜欢的更改;vim正在向您展示它与每个顶视图有何不同,这是自动合并无法处理的区域。如果您不想进行远程更改,请从
LOCAL 中提取更改。如果您更喜欢 LOCAL 更改,请从 REMOTE 中提取更改。如果您认为 REMOTE 和 LOCAL 都错误,请从 BASE
中提取。如果您有更好的主意,请做一些完全不同的事情!最后,您在此处所做的更改是实际提交的更改。

2022-06-24