git、vimdiff 和 dirdiff

标签 git vim vimdiff

我正在尝试使用 vimdiff+ dirdiff.vim在 Vim 内部区分多个文件,并使用 Git 进行版本控制。

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

我在网上找到的将 Vim 与 Git diff 集成的唯一方法是在单个文件上使用 vimdiff,如 this post 中所述。 .

有谁知道怎么用vimdiff+dirdiff+git吗?

最佳答案

git 1.7.11版本之前

git-diffall 是我需要的,非常感谢。借助这个page关于 git difftool 和这个 one关于从命令行运行 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

git-diffall 放入我的 PATH 后,我可以将工作目录与分支 dev 进行比较:

git diffall dev

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

git diffall --copy-back dev

从 git 版本 1.7.11 开始

自版本1.7.11 ,“git 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'

例如工作目录与分支 dev 的差异是通过以下方式完成的:

git difftool -d dev

关于git、vimdiff 和 dirdiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156493/

相关文章:

vim - 允许在 cygwin 中点击 vim

vim - 设置 Ack 以查看 Handlebars 文件

vim - 我如何接受 vimdiff hunk 的两个更改?

git - 你如何取消外部 git diff?

当推送到远程 origin/master 时,Git 提交将恢复为暂存状态

git - 源代码树 - 删除、丢弃、忽略之间有什么区别?

git - Bitbucket:更新 fork 以 merge master repo 的更改?

git - 如何在远程端存储库上找到 'git blame'?

bash - 在多个(新)选项卡中打开现有 Gvim 中的文件