Ich habe eine Datei mit verschoben git mv
. Jetzt möchte ich einen Unterschied für die neue Datei machen, um sie mit der alten Datei zu vergleichen (mit dem alten, jetzt nicht existierenden Namen).
Wie mache ich das?
git
diff
file-rename
mv
Dr. Jerry
quelle
quelle
git diff -- yourRenamedFile
ausreichen. Siehe meine Antwort untenAntworten:
Sie müssen -M verwenden, damit git die verschobene Datei beim Unterschieden automatisch erkennt. Mit just
git diff
von Knittl funktioniert bei mir nicht.Also einfach:
git diff -M
sollte es tun.Die Dokumentation für diesen Schalter lautet:
quelle
~/.gitconfig
?git diff
. Das Ausführengit diff -M
einer einzelnen (umbenannten) Datei meldet keine Umbenennung.git log --follow -- file_after_move.txt
funktioniert aber gut. Es zeigt die gesamte Geschichte, auch vor dem Umzug. Irgendwelche Ideen? Ich rennegit version 2.11.0.windows.1
.-C
Option zum Erkennen von Kopien ist nützlich und ähnlich. Ich habe es verwendet-M
, um einen Diff zu betrachten, bei dem ich eine Datei in zwei umgestaltet hatte (wobei keiner der Namen mit dem Original übereinstimmt).Zusätzlich zu dem, was knittl geschrieben hat , können Sie immer Folgendes verwenden:
Dabei
HEAD:./oldfilename
bedeutet alter Dateiname im letzten Commit (in HEAD) relativ zum aktuellen Verzeichnis.Wenn Sie nicht genug neues Git haben, müssten Sie stattdessen verwenden:
quelle
git diff 39fa7c77e85c51d43ea0cf30d33aec8721812e9e:./oldfilename newfilename
git diff branch:old/filen.name newfilename
cd
in das Verzeichnis und nicht--
vor demcommit:path
Paar hinzufügen . Git scheint hier mit der Syntax sehr wählerisch zu sein.<commit-ish>:<pathname>
Syntax ist eine Objektkennung, etwas Git-ish; nachdem--
Git nur Dateinamen erwartet.Mit Git 2.9 (Juni 2016) müssen Sie nichts mehr hinzufügen
-M
.git diff
Verwendet-M
standardmäßig.Siehe Commit 5404c11 , Commit 9501d19 , Commit a9276a6 , Commit f07fc9e , Commit 62df1e6 (25. Februar 2016) von Matthieu Moy (
moy
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 5d2a30d , 03. April 2016)Die neuen Tests für diese Funktion sind hier .
quelle
git diff -M
Aktiviert die Umbenennungserkennung, wie andere gesagt haben (und wie @VonC hervorhob, ist sie ab Git 2.9 standardmäßig aktiviert). Wenn Sie jedoch einen großen Änderungssatz haben, wird die Erkennung ungenauer Umbenennungen möglicherweise immer noch deaktiviert. Git zeigt eine Warnung wie die folgende an, die im angezeigten Diff leicht zu übersehen ist:Stellen Sie in diesem Fall die Konfigurationsoption beispielsweise wie von git vorgeschlagen ein
und führen Sie Ihren diff-Befehl erneut aus.
quelle
Aus irgendeinem Grund hat die Verwendung
HEAD:./oldfilename
(oder der absolute Pfad) bei mir nicht funktioniert, aberHEAD:oldfilename
(danke cmn):HTH
quelle
HEAD:./oldfilename
?einfach
git diff
ohne Argumente ausführen , odergit diff -- newfilename
. git ist klug genug, um die richtigen Dateien / Inhalte zu vergleichen (dh den ursprünglichen Inhalt vor dem Umbenennen mit dem geänderten Inhalt nach dem Umbenennen).quelle
git mv
Sie einfach eine einzelne Datei erstellen und dann den bereitgestellten Status mit einem anderen ansonsten identischen Zweig vergleichen, wird der Unterschied "Alles wurde gelöscht und neu erstellt" erzeugt, sofern er nicht-M
verwendet wird.