同じブランチの2つの異なるコミット間で、同じファイルを差分するにはどうすればいいですか?

Gitでは、同じブランチ(masterなど)の2つの異なるコミット(連続していない)の間で、同じファイルを比較するにはどうしたらいいでしょうか?

Visual SourceSafe]1 (VSS)やTeam Foundation Server (TFS)にあるような比較機能を探しているのですが。それはGitで可能でしょうか?

ソリューション

git-diff`]1マニュアルページより。

git diff [--options]   [--] [<path>...]

例えば、あるファイル "main.c"について、現在と2回前のコミットの違いを見るには、以下の3つの同等のコマンドを実行します。

$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
解説 (12)

また、次のように2つのリビジョンの異なるファイルを比較することもできます。

git diff <revision_1>:<file_1> <revision_2>:<file_2>

解説 (3)

2つのコミットの間に行われたファイルへのすべての変更をコミットごとに確認したい場合は、次のようにすることもできます。

git log -u $start_commit..$end_commit -- path/to/file.

解説 (2)