![Ist „git diff“ mit „diff“ verwandt?](https://rvso.com/image/109224/Ist%20%E2%80%9Egit%20diff%E2%80%9C%20mit%20%E2%80%9Ediff%E2%80%9C%20verwandt%3F.png)
Bezieht git diff
sich auf diff
?
Wird
git diff
basierend auf implementiertdiff
?Istdie Kommandozeilensyntax von
git diff
ähnlich zudas vondiff
? Hilft es sehr, das eine zu lernen und das andere zu nutzen?Folgen ihre Ausgabedateien demselben Format? Können sie sowohl von
git patch
als auch verwendet werdenpatch
? (Gibt esgit patch
? In welcher Beziehung steht es zupatch
?)
Danke.
Antwort1
Das Dateiformat ist interoperabel. Git verwendet das beste Format, diff -u
. Es erweitert es auch, um zusätzliche Arten von Änderungen darzustellen.
Das Äquivalent zu patch
ist git apply
. Es inszeniert die Änderungen im Index und wendet sie auf den Arbeitsbaum an.
Ich erinnere mich, git apply
dass es strenger war als patch
, obwohl die Referenzdokumentation keinen expliziten Vergleich zu machen scheint. Es werden mehrere Tests/Fehler erwähnt, die aktiviert oder deaktiviert werden können.
Die Referenzdokumentation legt auch nahe, dass es als „Ersatz für GNU Patch“ verwendet werden könnte – sogar außerhalb eines Git-Repositorys, wenn Sie eine bestimmte Option verwenden.
Antwort2
git-diff bietet mehr Funktionen als diff und ich glaube nicht, dass die Ausgabe-Patches interoperabel sind (ohne einige zusätzliche Optionen), da diff Zeilen wie diese erzeugt
diff -ruNa dir1/file1.txt dir2/file1.txt
während git-diff Zeilen wie diese erzeugt
diff --git a/dir1/file1.txt b/dir2/file1.txt
(Beachten Sie das Quell- und Zielpräfix, das mit umschaltbar ist --no-prefix
, und verschiedene Optionen)
Hier sind einige zusätzliche Funktionen von git-diff:
Kann verschobene/umbenannte Dateien aufzeichnen, währenddiff kann nicht
Verwendet den rekursiven Modus, Unified Diffs und verarbeitet standardmäßig neue/gelöschte Dateien (
diff -ruN
)Unterstützt verschiedene Algorithmen zum Finden von Unterschieden
Unterstützt Git-Binärpatches, die Binärdaten als ASCII kodieren