With git show you can show objects like commits ( see the man page for help ). This way you do not show diff of two files, but change files (possibly several). Thus, there are no two files that can be compared. But this is exactly what vimdiff does, it opens two files side by side and highlights the differences.
When you use git difftool or something like this, it will create files for both sides of the diff and use a tool (in your case vimdiff) to compare them. git show does not create these files, so its output cannot be displayed by vimdiff.
tl; dr: git show is a tool for displaying git objects, not for creating diff, so its output cannot be shown as diff using vimdiff.
What you can do is use git difftool . It will open gvimdiff for each changed file.
You can use the usual git diff options to compare different commits.
toydarian
source share