1340 Stimmen

Wie unterscheide ich dieselbe Datei zwischen zwei verschiedenen Commits im selben Branch?

In Git, wie kann ich die gleiche Datei zwischen zwei verschiedenen Commits (nicht aufeinanderfolgend) im selben Branch (zum Beispiel master) vergleichen?

Ich suche nach einer vergleichen Funktion wie in Visual SourceSafe (VSS) oder Team Foundation Server (TFS).
Ist das in Git möglich?

1694voto

mipadi Punkte 377834

Vom git-diff Manpage:

git diff [--Optionen]   [--] [...]

Zum Beispiel, um den Unterschied für eine Datei "main.c" zwischen jetzt und zwei Commits zurück zu sehen, hier sind drei äquivalente Befehle:

$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c

340voto

Jakub Narębski Punkte 286531

Sie können auch zwei verschiedene Dateien in zwei verschiedenen Revisionen vergleichen, so:

git diff <_Revision_1_>:<_Datei_1_> <_Revision_2_>:<_Datei_2_>

101voto

Anver Sadhat Punkte 2876

Wenn Sie das "difftool" konfiguriert haben, können Sie es verwenden

git difftool revision_1:file_1 revision_2:file_2

Beispiel: Vergleichen einer Datei von ihrem letzten Commit mit ihrem vorherigen Commit im selben Branch: Vorausgesetzt, Sie befinden sich im Stammverzeichnis Ihres Projekts

$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java

Sie sollten die folgenden Einträge in Ihrer ~/.gitconfig oder in der project/.git/config-Datei haben. Installieren Sie das p4merge [Dies ist mein bevorzugtes Diff- und Merge-Tool]

[merge]
    tool = p4merge
    keepBackup = false
[diff]
    tool = p4merge
    keepBackup = false
[difftool "p4merge"]
    path = C:/Program Files (x86)/Perforce/p4merge.exe
[mergetool]
    keepBackup = false
[difftool]
    keepBackup = false
[mergetool "p4merge"]
    path = C:/Program Files (x86)/Perforce/p4merge.exe
    cmd = p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

Hinweis: Wenn Sie Intellij Enterprise oder Community Edition verwenden - Es ist eines der besten Tools für 3-Wege-Merge.

69voto

Vibhuti Punkte 1444

Überprüfen Sie $ git log, kopieren Sie die SHA-1 ID der beiden verschiedenen Commits und führen Sie den Befehl git diff mit diesen IDs aus. Zum Beispiel:

$ git diff (sha-id-one) (sha-id-two)

43voto

cxreg Punkte 10378

Wenn Sie alle Änderungen in der Datei zwischen den beiden Commits auf Commit-Basis anzeigen möchten, können Sie auch Folgendes tun

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X