Hvordan diff'er jeg den samme filen mellom to forskjellige commits på samme gren?

I Git, hvordan kan jeg sammenligne den samme filen mellom to forskjellige commits (ikke sammenhengende) på samme gren (for eksempel master)?

Jeg leter etter en compare-funksjon som den i Visual SourceSafe (VSS) eller Team Foundation Server (TFS). Er det mulig i Git?

Løsning

Fra man-siden git-diff:

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

For eksempel, for å se forskjellen for en fil "main.c" mellom nå og to commits tilbake, her er tre ekvivalente 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 forskjellige filer i to forskjellige revisjoner, slik som dette:

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

Kommentarer (3)

Hvis du vil se alle endringer i filen mellom de to commitene på en commit-for-commit-basis, kan du også gjøre følgende

git log -u $start_commit..$end_commit -- path/to/file (logg -u $start_commit..$end_commit -- sti/til/fil)

Kommentarer (2)