Como posso divulgar o mesmo ficheiro entre dois commits diferentes no mesmo ramo?

Em Git, como eu poderia comparar o mesmo arquivo entre dois commits diferentes (não contíguos) no mesmo ramo (mestre, por exemplo)?

I'm procurando por uma funcionalidade compare como a de Visual SourceSafe (VSS) ou Team Foundation Server (TFS). Isso é possível em Git?

Solução

Da página git-diff manpage:

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

Por exemplo, para ver a diferença para um arquivo "main.c" entre agora e dois commits de volta, aqui estão três comandos equivalentes:

$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
Comentários (12)

Você também pode comparar dois arquivos diferentes em duas revisões diferentes, como esta:

git diff : :

Comentários (3)

Se você quiser ver todas as mudanças no arquivo entre os dois commits em uma base de commit-by-commit, você também pode fazer

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

Comentários (2)