解决与逃犯的冲突很好。看完之后 Painless Merge Conflict Resolution in Git,我开始思考如何不仅在行级别而且在单词级别上显示更改。
所有示例/案例均基于painless_git_conflicts_resolution repo。 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
结果如下:
问题是你只能看到所有线路都以某种方式发生了变化。这个例子非常简短,但有多少人发现第3行添加了 ?
RubyMine可以解决这个问题,虽然并非总是如此,但不会经常使用差异标记,并且不会突出显示差异。虽然在这个屏幕截图上没有差异标记,但缺乏“对比”使得解决冲突变得非常困难。
Show base in fugitive.vim conflict diff stackoverflow问题让我尝试the accepted answer,但解决方案并非改进。
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
mergetool
hub clone ryrych/painless_git_conflicts_resolution opendiff
cd opendiff/
git checkout beta
git merge origin/master
git mergetool
和voilà!
当然,这解决了这个问题,但是我依赖的是一个仅为一个系统设计的外部工具。总结一下:是否有可能在Vim中实现与opendiff类似的东西?
答案 0 :(得分:1)
我发现在我的机器上(运行vim 7.4),所有差异都会突出显示线条内的差异。来自:help view-diff
的文本暗示这是标准行为。它没有说明打开或关闭功能,只是hl-DiffText
突出显示组用于"更改了更改行内的文本"
我会尝试不同的配色方案,或者至少尝试并仔细检查您当前的配色方案是否定义了hl-DiffText
的外观
编辑:显然,给定的示例实际上很难显示字级差异。每一行都有多个地方的变化,它们非常短,并且没有任何行保持完全不变以提供上下文。正如您在屏幕截图中看到的那样,删除冲突标记会将所有"所有基础"相同行号的行,并突出显示单词级差异。您可能想尝试更复杂的回购/合并冲突。