如何让 "git difftool --dir-diff" 与 vim 一起工作
How to make "git difftool --dir-diff" working with vim
我很高兴与 git difftool --dir-diff
一起使用 beyond compare 来显示目录和文件之间的整体差异并浏览它们。
然而,当谈到 vimdiff 时,它似乎不支持来自 git 的 dir diff。我创建的一个 git 别名如下
dirdiff = difftool --ignore-submodules --tool=vimdiff --dir-diff --no-symlinks
在我执行 git dirdiff HEAD~1 HEAD
之类的操作后,它会在 netrw
文件浏览器中内置 vim 左右列出我的 2 个目录。但是,在其中任何一个上按 Enter 都不会使文件夹在两侧展开,更不用说打开具有并排差异的文件了。
vimdiff 可以很好地在可视模式下显示单个文件差异,有没有办法让它也适用于 --dir-diff
?
我从另一个 Whosebug thread 那里找到了解决方案。答案由@user744629 提供。按照他的建议
- 安装vim dirdiff
- 在
.gitconfig
中添加如下配置
[alias]
dirdiff = difftool --ignore-submodules --dir-diff --no-symlinks --tool=vimdirdiff
[difftool "vimdirdiff"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE
之后您可以使用 git dirdiff HEAD HEAD~1
并排查看差异。
我很高兴与 git difftool --dir-diff
一起使用 beyond compare 来显示目录和文件之间的整体差异并浏览它们。
然而,当谈到 vimdiff 时,它似乎不支持来自 git 的 dir diff。我创建的一个 git 别名如下
dirdiff = difftool --ignore-submodules --tool=vimdiff --dir-diff --no-symlinks
在我执行 git dirdiff HEAD~1 HEAD
之类的操作后,它会在 netrw
文件浏览器中内置 vim 左右列出我的 2 个目录。但是,在其中任何一个上按 Enter 都不会使文件夹在两侧展开,更不用说打开具有并排差异的文件了。
vimdiff 可以很好地在可视模式下显示单个文件差异,有没有办法让它也适用于 --dir-diff
?
我从另一个 Whosebug thread 那里找到了解决方案。答案由@user744629 提供。按照他的建议
- 安装vim dirdiff
- 在
.gitconfig
中添加如下配置
[alias]
dirdiff = difftool --ignore-submodules --dir-diff --no-symlinks --tool=vimdirdiff
[difftool "vimdirdiff"]
cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE
之后您可以使用 git dirdiff HEAD HEAD~1
并排查看差异。