tags:

views:

58

answers:

1

I want to view the history of a single file, and then compare a single revision from that history against the current version.

On the command line, this is easy:

  1. Run:

    git log -- <filename>
    
  2. Locate the version you want to compare,

  3. Run:

    git diff <commitid> -- <filename>
    

But how can this be done using only the default Git gui tools, git gui and gitk?

I know of two methods using gitk, but they're both horribly clunky:

Either:

  1. Select the New View option from the View menu,

  2. Type in the full path to your file into the box labelled Enter files and directories to include, one per line,

  3. Locate the version you want to compare by looking at the highlighted items in the top pane, and click on it to select it,

  4. Right-click on the current version and select Diff selected -> this,

Or:

  1. Select Tree in the bottom right-hand pane,

  2. Locate the file you want to look at, right-click on it, and select Highlight this only,

  3. Locate the version you want to compare by looking at the highlighted items in the top pane, and click on it to select it,

  4. Right-click on the current version and select Diff selected -> this,

  5. Click on the file in the bottom right-hand pane to jump to it in the diff output, or scroll manually.

Is there a better method than this?

+1  A: 

You can launch gitk from the command line and limit its scope to a single file.

You can also limit the output to a set of commits.

For example, to show the changes since <commit> that changed path/to/file, try:

gitk <commit>.. -- path/to/file

See the gitk man page for more details.

Tim Henigan
@timhenigan Thanks, but I'm looking for a solution that does not use the command line at *all*. I've edited the question to make this more clear.
Rich