Wie kann ich die gleiche Datei zwischen zwei verschiedenen Commits im gleichen Zweig vergleichen?
Wie kann ich in Git dieselbe Datei zwischen zwei verschiedenen (nicht zusammenhängenden) Übertragungen auf demselben Zweig (z. B. Master) vergleichen?
Ich suche nach einer Vergleichsfunktion, wie sie in Visual SourceSafe (VSS) oder Team Foundation Server (TFS) vorhanden ist. Ist das in Git möglich?
1070
10
Aus der
git-diff
Manpage:Um zum Beispiel den Unterschied zwischen der Datei "main.c" und zwei Übertragungen zurück zu sehen, gibt es drei gleichwertige Befehle:
Sie können auch zwei verschiedene Dateien in zwei verschiedenen Revisionen vergleichen, etwa so:
git diff <revision_1>:<file_1> <revision_2>:<file_2>
Wenn Sie das "difftool" konfiguriert haben; konfiguriert haben, können Sie
Beispiel: Vergleichen einer Datei von ihrer letzten Übertragung mit ihrer vorherigen Übertragung auf demselben Zweig: Angenommen, dass, wenn Sie sich in Ihrem Projekt-Root-Ordner befinden
Sie sollten die folgenden Einträge in Ihrer ~/.gitconfig oder in der Datei project/.git/config haben. Installieren Sie p4merge [Dies ist mein bevorzugtes Diff- und Merge-Werkzeug].
Prüfen Sie
$ git log
, kopieren Sie dann die SHA-ID von 2 verschiedenen Commits und führen Sie dann z.B. den Befehlgit diff
mit diesen ids aus:Wenn Sie alle Änderungen an der Datei zwischen den beiden Commits auf einer Commit-by-Commit-Basis sehen möchten, können Sie auch Folgendes tun
git log -u $start_commit..$end_commit -- path/to/file
Hier ist ein Perl-Skript, das Git-Diff-Befehle für eine gegebene Datei ausgibt, wie sie in einem Git-Log-Befehl zu finden sind.
z.B.
Renditen:
die dann in einer Shell-Fenster-Sitzung N-geklebt oder nach /bin/sh gepiped werden konnte.
Anmerkungen:
Die Datei (in diesem Fall pom.xml) muss an beiden Stellen übereinstimmen (Sie könnten sie in eine Shell-Funktion einbinden, um an beiden Stellen die gleiche Datei bereitzustellen) oder sie als Shell-Skript in ein Bin-Verzeichnis legen
Kodex:
Wenn Sie mehrere Dateien oder Verzeichnisse haben und nicht kontinuierliche Übergaben vergleichen möchten, können Sie dies tun:
Erzeugen Sie einen temporalen Zweig
Zum ersten Commit-Ziel zurückspulen
Die Kirsche hackt auf Interessierten herum
Diff anwenden
Wenn Sie fertig sind
Wenn Sie einen Diff mit mehr als einer Datei durchführen möchten, verwenden Sie die durch @mipadi angegebene Methode:
Z.B. diff zwischen
HEAD
und Ihremmaster
, um alle `.coffee'-Dateien zu finden:Dadurch wird Ihr
Ihr_Suchordner/
rekursiv nach allen.coffee'-Dateien durchsucht und eine Unterscheidung zwischen ihnen und ihren
Master'-Versionen gemacht.Nur eine andere Art git's awesomeness zu nutzen ...
Wenn Sie einen einfachen visuellen Vergleich unter Windows wünschen, wie Sie ihn in VSS oder TFS erhalten können, versuchen Sie dies:
Hinweis: Nach dem Upgrade auf Windows 10 habe ich die Optionen des Git-Kontextmenüs verloren. Sie können jedoch dasselbe mit 'gitk' erreichen; oder 'gitk filename' in einem Befehlsfenster.
Sobald Sie 'Git History' aufrufen, startet das Git-GUI-Tool, mit einer Historie der Datei im oberen linken Fensterbereich. Wählen Sie eine der Versionen aus, die Sie vergleichen möchten. Klicken Sie dann mit der rechten Maustaste auf die zweite Version und wählen Sie entweder
Diff dies -> ausgewählt
oder
Diff ausgewählt -> dieses
Farbcodierte Unterschiede werden im unteren linken Fensterbereich angezeigt.