Git 显示逃亡中的基地。vim冲突差异
默认情况下,如果在与git冲突的文件缓冲区上使用的是'sGit 显示逃亡中的基地。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
:Gdiff
,则会得到显示的头
、工作副本(带有冲突标记)和合并
我喜欢设置git config merge.conflictstyle diff3
,它(冲突标记中HEAD
和merge
的最新共同祖先)
不幸的是,即使使用diff3
作为逃犯.vim中的conflictstyle
,您仍然只能得到3个窗格(无底)
有人知道如何在另一个窗格中显示它吗?最好是工作副本
Tim Pope似乎提供了一些线索,但我不太明白。您可以使用git mergetool-t gvimdiff。它将在gvimdiff中打开4个窗口。它没有内置在逃犯中,但是您仍然可以使用vim进行三方合并。您可以通过以下步骤完成:
-进行水平拆分:拆分
-顶部窗口中的Diff:Gdiff
- 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:我刚刚添加了一个答案,正好可以做到这一点。