Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vimdiff between current and previous git version of a file

Tags:

Is there a way of using vimdiff to compare the current version of a file and the same file n git versions ago?

For example, I'm working on the file foo.c on the branch master. I'd like to do a vimdiff between foo.c and foo.c from master~10, to copy one or two lines across from the old version.

PS I'm aware of git cherry pick, but that's for whole files, not just a couple of lines.

like image 746
Sonia Hamilton Avatar asked Feb 28 '13 06:02

Sonia Hamilton


People also ask

How do I navigate in Vimdiff?

Ctrl+w and right and left arrow can be used to move between any split windows on vim, not only vimdiff splits. These keys do work here on cygwin; also, Ctrl+w w also moves to the next window, but without the delay you mentioned.


2 Answers

Duh! RTFM. I was adding a PPS about this not being a use case for git difftool, then started wondering "what exactly does git difftool do...".

Solution is:

git difftool master master~10 -- foo.c

That is, presuming difftool is already set up correctly in ~/.gitconfig:

[diff]
  tool = vimdiff
[difftool]
  prompt = false
like image 158
Sonia Hamilton Avatar answered Oct 06 '22 11:10

Sonia Hamilton


For working with Git under Vim, the fugitive.vim - A Git wrapper so awesome, it should be illegal plugin is very useful. Check it out!

The vimdiff can be made with :Gdiff [revision].

like image 33
Ingo Karkat Avatar answered Oct 06 '22 10:10

Ingo Karkat