Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
895 views
in Technique[技术] by (71.8m points)

vim - git, vimdiff and dirdiff

I'm trying to use vimdiff+dirdiff.vim to diff inside Vim multiple files versionned with Git.

For Mercurial, it is possible with mercurial extdiff extension.

The only way I found on the web to integrate Vim with Git diff is to use vimdiff on a singe file, as describe in this post.

Does any one know how to use vimdiff+dirdiff+git?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Before git version 1.7.11

git-diffall is what I need, thanks a lot. With help of this page about git difftool and this one about running vim+dirdiff from command line, I wrote my $HOME/.gitconfig as:

[diff]
  tool = default-difftool

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

[difftool]
  prompt = false

After putting git-diffall in my PATH, I can diff for example working directory with branch dev with:

git diffall dev

The --copy-back is also what I need if I want to modify the working directory persitantly from Vim:

git diffall --copy-back dev

Since git version 1.7.11

Since version 1.7.11, "git difftool" learned the "--dir-diff" option that simplify things and git-diffall is no longer needed.

.gitconfig contains:

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

And diffing for example working directory with branch dev is done with:

git difftool -d dev

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...