Come posso diff lo stesso file tra due diversi commit sullo stesso ramo?

In Git, come potrei confrontare lo stesso file tra due diversi commit (non contigui) sullo stesso ramo (master per esempio)?

Sto cercando una funzione compare come quella di Visual SourceSafe (VSS) o Team Foundation Server (TFS). È possibile in Git?

Soluzione

Dalla pagina man di git-diff:

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

Per esempio, per vedere la differenza per un file "main.c" tra ora e due commit indietro, ecco tre comandi equivalenti:

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

Potete anche confrontare due file diversi in due revisioni diverse, come questo:

git diff <revisione_1>:<file_1> <revisione_2>:<file_2>

Commentari (3)

Se volete vedere tutte le modifiche al file tra i due commit su una base di commit-by-commit, potete anche fare

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

Commentari (2)