git,vimdiff和dirdiff

use*_*629 20 git vim vimdiff

我正在尝试使用vimdiff + dirdiff.vim在Vim中使用Git版本化多个文件.

对于Mercurial,可以使用mercurial extdiff扩展.

我在网上Vim的Git的差异整合上发现的唯一的办法就是在烧毛文件用Vimdiff,在描述这个职位.

有谁知道如何使用vimdiff + dirdiff + git?

use*_*629 16

在git版本1.7.11之前

git-diffall是我需要的,非常感谢.有了这个帮助页面大约GIT中difftool这一个约从命令行运行VIM + dirdiff,我写我$HOME/.gitconfig的:

[diff]
  tool = default-difftool

[difftool "default-difftool"]
  cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE

[difftool]
  prompt = false
Run Code Online (Sandbox Code Playgroud)

放入 git-diffall 我之后PATH,我可以将diff与例如工作目录一起分支dev:

git diffall dev
Run Code Online (Sandbox Code Playgroud)

--copy-back如果我想从Vim中持久地修改工作目录,这也是我需要的:

git diffall --copy-back dev
Run Code Online (Sandbox Code Playgroud)

自从git版本1.7.11

从版本1.7.11,"混帐difftool"绝活"--dir-DIFF"选项,简化的东西,git-diffall不再需要.

.gitconfig 包含:

[diff]
  tool = default-difftool
[difftool "default-difftool"]
  cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
Run Code Online (Sandbox Code Playgroud)

差异化,例如带分支的工作目录dev完成:

git difftool -d dev
Run Code Online (Sandbox Code Playgroud)


Wal*_*ter 6

Tim Pope的逃犯是vim的典型git插件.它可能没有dirdiff的功能,但它确实可以很好地集成git status输出,使用键映射可以在修改后的文件之间轻松导航.git status输出中列出的任何文件都可以通过D映射轻松区分,从而允许您自定义更改中的确切更改.


Tim*_*gan 2

Git 不直接支持目录差异,但可以通过第 3 方扩展来完成。

查看git diffall(披露:我写了这个脚本)。该脚本与设置的工具配合使用git config diff.tool <TOOL>来执行真正的目录差异。

另请参阅以下相关问题: