2

解决与逃犯的冲突很棒。在阅读 了 Git 中的 Painless Merge Conflict Resolution 之后,我开始思考如何不仅在行级而且在字级上显示更改。

所有示例/案例均基于painless_git_conflicts_resolution 回购Hub用于使git clone命令更简洁。

具有残疾diff3冲突风格的逃犯。

hub clone ryrych/painless_git_conflicts_resolution fugitive_no_diff3 cd fugitive_no_diff3/ git checkout beta git merge origin/master vim roses.txt :Gdiff

结果如下:

在未启用 diff3 的情况下解决与逃犯的冲突

问题是您只能看到所有行都以某种方式发生了变化。这个例子很短,但有多少人发现第 3 行中添加了of

RubyMine 可以解决这个问题,但并非总是如此,它经常给您留下差异标记,并且没有差异突出显示。虽然在这个屏幕截图上没有差异标记,但缺乏“对比”使得解决这些冲突变得非常困难。

解决与 RubyMine 的冲突

启用 diff3 + 显示共同祖先的逃犯:

Show base in fugitive.vim conflict diff stackoverflow 问题让我尝试接受的答案,但解决方案没有改进。

hub clone ryrych/painless_git_conflicts_resolution fugitive_with_diff3 cd fugitive_with_diff3/ git checkout beta git merge origin/master vim roses.txt :split :Gdiff [Ctrl][W][J] :Gedit :1

在不禁用 diff3 的情况下解决与逃犯的冲突

opendiff 作为mergetool

hub clone ryrych/painless_git_conflicts_resolution opendiff cd opendiff/ git checkout beta git merge origin/master git mergetool

瞧!

解决与 opendiff 的冲突

当然,这解决了问题,但让我依赖一个仅为一个系统设计的外部工具。总结一下:是否有可能在 Vim 中实现与在 opendiff 中类似的东西?

4

1 回答 1

1

我发现在我的机器上(运行 vim 7.4)所有的差异都突出了行内的差异。来自的文本:help view-diff暗示这是标准行为。它没有说明打开或关闭该功能,只是hl-DiffText突出显示组用于“已更改行内的已更改文本”

我会尝试不同的配色方案,或者至少尝试仔细检查您当前的配色方案是否定义了外观hl-DiffText

编辑:显然,给定的示例实际上对于显示单词级别的差异确实很糟糕。每行在多个地方都有变化,它们很短,并且没有任何行保持完全不变来提供上下文。正如您在屏幕截图中看到的那样,删除冲突标记会将所有“我的所有基础”行置于同一行号,并且单词级别的差异会突出显示。您可能想尝试更复杂的回购/合并冲突。

:Gdiff 在 vi​​m 中没有显示单词级别的变化

:gdiff 在 vi​​m 中显示单词级别的变化

于 2015-04-02T17:30:25.857 回答