在fugitive.vim冲突差异中显示基础

duk*_*ave 6 git vim git-merge vim-fugitive

默认情况下,如果你使用fugitive.vim:Gdiff上是与git的冲突文件缓冲区,你会得到一个三路DIFF显示HEAD,工作复印件(冲突标志),和merge.

我喜欢git config merge.conflictstyle diff3设置,包括基础(最近的共同祖先HEADmerge冲突标记.

不幸的是,即使diff3conflictstylein fugitive.vim中,你仍然只能获得3个窗格(没有基础).

有谁知道如何在另一个窗格中显示它?理想情况下是关于工作副本.

Tim Pope的评论似乎提供了一些线索,但我无法弄明白.

tid*_*eck 5

您可以通过以下步骤来完成:

  • :split - 进行水平分割
  • :Gdiff - 顶部窗口中的差异
  • ctrlw+ j- 将焦点移到底部窗口
  • Gedit :1 - 在底部窗口加载祖先

Gedit :2加载头部并Gedit :3加载合并


glt*_*lts 5

我知道的最快的方法是这个命令,在冲突的缓冲区中发出:

:Gsdiff :1 | Gvdiff
Run Code Online (Sandbox Code Playgroud)

您必须将这些命令作为一行输入,将它们作为两个单独的命令输入时效果会有所不同。

结果如下所示:

+---------------------------------------+
|         common ancestor (:1)          |
+-----------+--------------+------------+
|           |              |            |
| HEAD (:2) | working copy | merge (:3) |
|           |              |            |
+-----------+--------------+------------+
Run Code Online (Sandbox Code Playgroud)

括号内的内容是 fugitive.vim 在此上下文中理解的“修订”说明符。有关:h fugitive-revision更多信息,请参阅。