Git 显示逃亡中的基地。vim冲突差异

Git 显示逃亡中的基地。vim冲突差异,git,vim,git-merge,vim-fugitive,Git,Vim,Git Merge,Vim Fugitive,默认情况下,如果在与git冲突的文件缓冲区上使用的是's:Gdiff,则会得到显示的头、工作副本(带有冲突标记)和合并 我喜欢设置git config merge.conflictstyle diff3,它(冲突标记中HEAD和merge的最新共同祖先) 不幸的是,即使使用diff3作为逃犯.vim中的conflictstyle,您仍然只能得到3个窗格(无底) 有人知道如何在另一个窗格中显示它吗?最好是工作副本 Tim Pope似乎提供了一些线索,但我不太明白。您可以使用git mergetoo

默认情况下,如果在与git冲突的文件缓冲区上使用的是's
:Gdiff
,则会得到显示的
、工作副本(带有冲突标记)和
合并

我喜欢设置
git config merge.conflictstyle diff3
,它(冲突标记中
HEAD
merge
的最新共同祖先)

不幸的是,即使使用
diff3
作为逃犯.vim中的
conflictstyle
,您仍然只能得到3个窗格(无底)

有人知道如何在另一个窗格中显示它吗?最好是工作副本


Tim Pope似乎提供了一些线索,但我不太明白。

您可以使用git mergetool-t gvimdiff。它将在gvimdiff中打开4个窗口。它没有内置在逃犯中,但是您仍然可以使用vim进行三方合并。

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

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

Gedit:2
加载head和
Gedit:3
加载merge

据我所知,最快的方式是在冲突缓冲区中发出以下命令:

:Gsdiff :1 | Gvdiff
必须以一行输入这些命令,当以两个单独的命令输入时,效果不同

结果如下所示:

+---------------------------------------+
|         common ancestor (:1)          |
+-----------+--------------+------------+
|           |              |            |
| HEAD (:2) | working copy | merge (:3) |
|           |              |            |
+-----------+--------------+------------+

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

如果您只想打开已在vim缓冲区中打开的文件的差异,这些答案都很好。我更喜欢使用
git mergetool
,并将其打开四向差异视图如下所示:

+-----------+----------------------+------------+
|           |                      |            |
| HEAD (:2) | common ancestor (:1) | merge (:3) |
|           |                      |            |
+-----------+----------------------+------------+
|                 working copy                  |
+-----------------------------------------------+
[mergetool "fugitive"]
    cmd = vim -f "$MERGED" -S "$HOME/.vim/diff.vim"
[merge]
    tool = fugitive
多亏了这里的其他答案,我创建了一个名为
diff.vim
的文件,并将其放在我的
~/.vim
目录中,从而实现了这一点:

Gsdiff :1
exe 1 . "wincmd w"
Gvdiff!
call feedkeys(winnr()."\<C-W>jgg", 'n')

希望这对其他人有用。

你试过了吗?有可能改变顺序吗?交换常用副本和工作副本会很有用。@Holloway:我刚刚添加了一个答案,正好可以做到这一点。