我使用“git diff with vimdiff”作为指导,将git diff封装到vimdiff中,除非有许多文件发生更改,否则它会按预期工作。
当有多个文件的变化,我运行git diff,它打开第一个文件,退出vimdiff的第一个实例后,我呈现以下消息:
external diff died, stopping at filename
这和我以前的行为完全不同。我在过去使用SVN时也有类似的设置,当对多个文件进行差异时,我会检查第一个文件,然后使用:wq写入并退出,然后打开下一个有差异的文件。
Git不是这样的。我尝试了:n[ext],但是这样做不会用原始文件填充左窗口,这样它就可以与修改后的版本进行区分。
git config --global diff.tool vimdiff
git config --global difftool.prompt false
输入git difftool会产生预期的行为。
导航命令,
:qa在vim中循环到更改集中的下一个文件而不保存任何东西。
混叠(示例)
git config --global alias.d difftool
. .将允许您输入git d来调用vimdiff。
先进的用例,
默认情况下,git使用-R选项调用vimdiff。你可以用git配置——global difftool.vimdiff.cmd 'vimdiff "$LOCAL" "$REMOTE"'来覆盖它。这将以可写模式打开vimdiff,允许在差分时进行编辑。
:wq在vim中循环到变更集中保存的下一个文件。
git config --global diff.tool vimdiff
git config --global difftool.prompt false
输入git difftool会产生预期的行为。
导航命令,
:qa在vim中循环到更改集中的下一个文件而不保存任何东西。
混叠(示例)
git config --global alias.d difftool
. .将允许您输入git d来调用vimdiff。
先进的用例,
默认情况下,git使用-R选项调用vimdiff。你可以用git配置——global difftool.vimdiff.cmd 'vimdiff "$LOCAL" "$REMOTE"'来覆盖它。这将以可写模式打开vimdiff,允许在差分时进行编辑。
:wq在vim中循环到变更集中保存的下一个文件。
Git accepts kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
and opendiff as valid diff tools. You can also set up a custom tool.
git config --global diff.tool vimdiff
git config --global diff.tool kdiff3
git config --global diff.tool meld
git config --global diff.tool xxdiff
git config --global diff.tool emerge
git config --global diff.tool gvimdiff
git config --global diff.tool ecmerge