git diff
kann Ihnen den Unterschied zwischen zwei Commits zeigen:
git diff mybranch master -- myfile.cs
Oder äquivalent:
git diff mybranch..master -- myfile.cs
Wenn die letztere Syntax verwendet wird HEAD
, kann sie weggelassen werden (z . B. im master..
Vergleich master
zu HEAD
).
Sie könnten auch interessiert sein an mybranch...master
(aus git diff
Dokumenten ):
In diesem Formular werden die Änderungen in dem Zweig angezeigt, der bis zur Sekunde enthält <commit>
, beginnend mit einem gemeinsamen Vorfahren von beiden <commit>
. git diff A...B
ist äquivalent zu git diff $(git-merge-base A B) B
.
Mit anderen Worten, dies führt zu unterschiedlichen Änderungen, master
da es davon abweicht mybranch
(jedoch ohne neue Änderungen seitdem mybranch
).
In allen Fällen zeigt das --
Trennzeichen vor dem Dateinamen das Ende der Befehlszeilenflags an. Dies ist optional, es sei denn, Git wird verwirrt, wenn sich das Argument auf ein Commit oder eine Datei bezieht, aber es ist keine schlechte Angewohnheit, sich darauf einzulassen. Einige Beispiele finden Sie unter https://stackoverflow.com/a/13321491/54249 .
Dieselben Argumente können übergeben werden, git difftool
wenn Sie eines konfiguriert haben.
git diff branch1 branch2 myfile.cs
. (Das--
sollte nicht mehr nötig sein, da es nur bis zu zwei Revisionsargumente aufnehmen kann.)--
. Häufigen und einfachen Fehler.)git diff --name-status branch1..branch2
(wahrscheinlich offensichtlich, aber ich dachte, ich würde es erwähnen, falls jemand anderes die gleichen Probleme hat wie ich).Du kannst das:
git diff branch1:path/to/file branch2:path/to/file
Wenn Sie Difftool konfiguriert haben, können Sie auch:
git difftool branch1:path/to/file branch2:path/to/file
Verwandte Frage: Wie kann ich die Git-Diff-Ausgabe mit dem Visual-Diff-Programm anzeigen?
quelle
branch1:./file
. B. ). Dies ist auch nützlich, wenn sich die Datei an einem separaten Speicherort zwischen Zweigen befindet (zgit diff branch1:old/path/to/file branch2:new/path/to/file
. B. ).git diff branch1 branch2 path/to/file
.Modernere Syntax:
git diff ..master path/to/file
Das Doppelpunktpräfix bedeutet "vom aktuellen Arbeitsverzeichnis nach". Du kannst auch sagen:
master..
dh die Umkehrung von oben. Dies ist das gleiche wiemaster
.mybranch..master
und verweist explizit auf einen anderen Status als den aktuellen Arbeitsbaum.v2.0.1..master
, dh auf ein Tag verweisen.[refspec]..[refspec]
, im Grunde alles, was als Code-Status für Git identifiziert werden kann.quelle
Es gibt viele Möglichkeiten, Dateien aus zwei verschiedenen Zweigen zu vergleichen:
Option 1: Wenn Sie die Datei von einem bestimmten Zweig mit einem anderen bestimmten Zweig vergleichen möchten:
Beispiel:
Option 2: Einfacher Weg:
Beispiel:
Option 3: Wenn Sie Ihr aktuelles Arbeitsverzeichnis mit einem Zweig vergleichen möchten:
Beispiel:
quelle
Ich mache es einfach
git diff branch1 branch2 path/to/file
Dies prüft auf Unterschiede zwischen den Dateien. Änderungen in
branch1
wären rot. Änderungen inbranch2
wären grün.Es wird angenommen, dass dies
branch1
die Vergangenheit undbranch2
die Zukunft ist. Sie können dies umkehren, indem Sie die Reihenfolge der Zweige im Diff umkehren:git diff branch2 branch1
quelle
Wenn Sie einen Unterschied zum aktuellen Zweig machen möchten, können Sie ihn weglassen und verwenden:
git diff $BRANCH -- path/to/file
Auf diese Weise unterscheidet es sich vom aktuellen Zweig zum referenzierten Zweig (
$BRANCH
).quelle
Ich stimme der von @dahlbyk vorgeschlagenen Antwort zu. Wenn Sie möchten, dass das Diff für Codeüberprüfungen in eine Diff-Datei geschrieben wird, verwenden Sie den folgenden Befehl.
quelle
In meinem Fall verwende ich den folgenden Befehl:
Mit diesem Befehl können Sie dieselbe Datei in zwei verschiedenen Zweigen vergleichen
quelle
Der beste Weg, dies zu tun, ist
git diff
die folgende Verwendung:git diff <source_branch> <target_branch> -- file_path
Es wird der Unterschied zwischen Dateien in diesen Zweigen überprüft. In diesem Artikel finden Sie weitere Informationen zu Git-Befehlen und deren Funktionsweise.
quelle
Verwenden Sie Commit-Hashes wie folgt:
wo hash1 sein kann begeht jeder von jedem Zweig, der gleich für hash2 .
quelle
Es gibt zwei Szenarien zum Vergleichen von Dateien:
Szenario 1: Vergleichen Sie Dateien in Remote-Zweigen (beide Zweige sollten im Remote-Repository vorhanden sein).
Szenario 2: Vergleichen Sie lokale Dateien (bei Kopie des lokalen Arbeitsbereichs) mit den Dateien im Remote-Repository.
Die Logik ist einfach. Wenn Sie zwei zu unterscheidende Zweignamen angeben, werden immer die Remote-Zweige verglichen. Wenn Sie nur einen Zweignamen angeben, wird Ihre lokale Arbeitskopie immer mit dem Remote-Repo (dem von Ihnen angegebenen) verglichen. Sie können range verwenden, um Remote-Repositorys bereitzustellen.
zB Kasse einer Filiale
Wenn Sie in diesem Fall einen Dateinamen angeben , wird Ihre lokale Kopie des Dateinamens mit dem Remote-Zweig " branch2 " verglichen .
In diesem Fall wird der Dateiname von Remote-Zweigen mit dem Namen " branch1 " mit " branch2 " verglichen.
In diesem Fall wird auch der Dateiname von Remote-Zweigen mit dem Namen " branch1 " mit " branch2 " verglichen . Also, es ist das gleiche wie oben. Wenn Sie jedoch gerade einen Zweig aus einem anderen Zweig erstellt haben, z. B. "master", und Ihr aktueller Zweig nicht im Remote-Repository vorhanden ist, wird Remote " master " mit remote " branch2 " verglichen .
Hoffe es ist nützlich.
quelle
Um zwei Dateien in der Git-Bash zu vergleichen, müssen Sie den folgenden Befehl verwenden:
Dieser Befehl zeigt den Unterschied zwischen den beiden Dateien in der Bash selbst.
quelle