用vimdiff查看所有`git diffs`

时间:2010-09-14 23:54:54

标签: git vim diff vimdiff

我设置git diff以包装到vimdiff中,使用“Git Diff with Vimdiff”作为指南,除非有许多文件有更改,否则它会按预期工作。

当有多个文件有更改并且我运行git diff时,它会打开第一个文件,在退出第一个vimdiff实例后,我会看到以下消息:

external diff died, stopping at filename

这是一种完全不同于我以前的行为。我在过去使用SVN时有类似的设置,在对多个文件进行区分时,我会查看第一个文件,然后使用:wq编写并退出,下一个文件会出现差异。

Git的情况并非如此。我尝试了:n[ext],但这样做并没有用原始文件填充左侧窗口,因此可以针对修改后的版本进行区分。

6 个答案:

答案 0 :(得分:307)

git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool

键入git d会产生预期的行为,在vim周期中键入:wq到变更集中的下一个文件。

答案 1 :(得分:96)

你可以尝试git difftool,它可以用来做这些事情。

首先,您需要将diff工具配置为vimdiff

git config diff.tool vimdiff

然后,当你想要差异时,只需使用git difftool而不是git diff。它会像你期望的那样工作。

答案 2 :(得分:20)

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

答案 3 :(得分:3)

对于想要使用git中未列出的其他差异工具的人,请使用nvim说。这是我最终使用的:

git config --global alias.d difftool -x <tool name>

在我的情况下,我将<tool name>设置为nvim -d并使用来调用diff命令

git d <file>

答案 4 :(得分:0)

如果您想永久使用 vimdiffgit diff,您可以设置 ~/.gitconfig 文件:

git config --global diff.tool vimdiff

然后你可以使用 git difftool 来区分。

如果只想临时使​​用vimdiff,可以每次都运行命令:

git difftool --tool=vimdiff

答案 5 :(得分:0)

执行单行命令。

git config --global diff.tool vimdiff && git config --global difftool.prompt false && git config --global alias.d difftool