Ich dachte, diese Frage (aus dem Titel) könnte sich auf die Verwendung von Git Diff für zwei Dateien beziehen, die nicht unbedingt in einem Repo enthalten sind. Ich fand, dass das Flag --no-index dafür ist, z. B. git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff hebt Änderungen nach Wort hervor, nicht nur nach Zeile, was für Langtext sehr hilfreich ist).
Pat
Antworten:
132
Geben Sie die Pfade explizit an:
git diff HEAD:full/path/to/foo full/path/to/bar
Überprüfen Sie die --find-renamesOption in den git-diffDokumenten .
Ich möchte erwähnen, dass Sie zwei beliebige Dateien mit vergleichen können, git diff <path> <path>auch wenn sie sich nicht in einem Git-Repository befinden.
Mitenka
1
@mitenka Ich denke nicht, dass das richtig ist. Wenn Sie sich ansehen, werden git diff --helpSie sehen, dass die einzigen Muster, die für zwei Dateien unterstützt werden, sind git diff [<options>] --no-index [--] <path> <path>. git diff a bEntspricht nur Festschreibungsmustern, nicht Dateien.
Doug
@Doug Hier ist das Zitat aus dem Hilfebefehl, den Sie erwähnt haben : git-scm.com/docs/git-diff : Zeigen Sie [...] Änderungen zwischen zwei Dateien auf der Festplatte an.
Mitenka
@mitenka Die Hilfe sagt, wenn Sie nicht '--no-index' verwenden, werden keine Dateien verglichen. Ihr Kommentar sollte eine separate Antwort sein. es ist nicht wahr und es ist nicht relevant für diese Antwort.
Doug
@ Doug Vielen Dank für Ihre Meinung. Hier ist das Zitat aus der Hilfe, auf das Sie verweisen: Sie können die --no-indexOption weglassen, wenn Sie den Befehl in einem von Git gesteuerten Arbeitsbaum ausführen und mindestens einer der Pfade außerhalb des Arbeitsbaums zeigt oder wenn Sie den Befehl außerhalb eines von Git gesteuerten Arbeitsbaums ausführen .
Mitenka
74
Ich glaube, mit --no-indexist das, wonach Sie suchen:
git diff [<options>]--no-index [--]<path><path>
wie im Git-Handbuch erwähnt:
In diesem Formular werden die beiden angegebenen Pfade im Dateisystem verglichen. Sie können
die Option weglassen,--no-index wenn Sie den Befehl in einem von Git gesteuerten Arbeitsbaum ausführen und mindestens einer der Pfade außerhalb des Arbeitsbaums zeigt oder wenn Sie den Befehl außerhalb eines von Git gesteuerten Arbeitsbaums ausführen.
@swe das ist definitiv eine nützliche Antwort, aber das OP hat ausdrücklich angegeben, dass sich die Datei in HEAD befindet, was bedeutet, dass sie sich in einem Git-Index befindet. Die akzeptierte Antwort adressiert direkt die Frage. Auch die akzeptierte Antwort hatte einen Vorsprung von 6 Jahren;)
Michael Delgado
1
Dies hat OP vielleicht nicht geholfen, aber es war genau das, wonach ich gesucht habe.
thislooksfun
3
Wenn Sie Tortoise Git verwenden, können Sie mit der rechten Maustaste auf eine Datei klicken und einen Diff gitieren, indem Sie mit der rechten Maustaste auf die erste Datei klicken und im Untermenü Tortoisegit "Diff later" auswählen. In der zweiten Datei können Sie auch mit der rechten Maustaste darauf klicken Gehen Sie zum Untermenü Tortoisegit und wählen Sie "Diff with yourfilenamehere.txt".
Mit PhpStorm kopiere ich einfach den vorherigen Commit-Code und vergleiche ihn mit der aktuellen Version mit dem integrierten Tool "Mit Zwischenablage vergleichen".
PhpStorm ist eine kommerzielle IDE. Bei dieser Frage geht es darum, wie dies innerhalb der Git Cli selbst zu tun ist, ohne dass zusätzliche Software vorausgesetzt wird.
git diff --no-index --word-diff old_file.txt new_file.txt
(--word-diff hebt Änderungen nach Wort hervor, nicht nur nach Zeile, was für Langtext sehr hilfreich ist).Antworten:
Geben Sie die Pfade explizit an:
git diff HEAD:full/path/to/foo full/path/to/bar
Überprüfen Sie die
--find-renames
Option in dengit-diff
Dokumenten .Gutschrift: twaggs .
quelle
git diff <path> <path>
auch wenn sie sich nicht in einem Git-Repository befinden.git diff --help
Sie sehen, dass die einzigen Muster, die für zwei Dateien unterstützt werden, sindgit diff [<options>] --no-index [--] <path> <path>
.git diff a b
Entspricht nur Festschreibungsmustern, nicht Dateien.--no-index
Option weglassen, wenn Sie den Befehl in einem von Git gesteuerten Arbeitsbaum ausführen und mindestens einer der Pfade außerhalb des Arbeitsbaums zeigt oder wenn Sie den Befehl außerhalb eines von Git gesteuerten Arbeitsbaums ausführen .Ich glaube, mit
--no-index
ist das, wonach Sie suchen:wie im Git-Handbuch erwähnt:
quelle
Wenn Sie Tortoise Git verwenden, können Sie mit der rechten Maustaste auf eine Datei klicken und einen Diff gitieren, indem Sie mit der rechten Maustaste auf die erste Datei klicken und im Untermenü Tortoisegit "Diff later" auswählen. In der zweiten Datei können Sie auch mit der rechten Maustaste darauf klicken Gehen Sie zum Untermenü Tortoisegit und wählen Sie "Diff with yourfilenamehere.txt".
quelle
Mit PhpStorm kopiere ich einfach den vorherigen Commit-Code und vergleiche ihn mit der aktuellen Version mit dem integrierten Tool "Mit Zwischenablage vergleichen".
quelle