Hvordan diff'er jeg den samme fil mellem to forskellige commits på den samme gren?

Hvordan kan jeg i Git sammenligne den samme fil mellem to forskellige commits (ikke sammenhængende) på den samme filial (f.eks. master)?

Jeg søger efter en compare-funktion som den i Visual SourceSafe (VSS) eller Team Foundation Server (TFS). Er det muligt i Git?

Løsning

Fra git-diff manpage:

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

For eksempel, for at se forskellen for en fil "main.c" mellem nu og to commits tilbage, er her tre tilsvarende kommandoer:

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

Du kan også sammenligne to forskellige filer i to forskellige revisioner, som her:

git diff <revision_1>:<fil_1> <revision_2>:<fil_2>

Kommentarer (3)

Hvis du ønsker at se alle ændringer i filen mellem de to commits på en commit-by-commit-basis, kan du også gøre følgende

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

Kommentarer (2)