Ist „git diff“ mit „diff“ verwandt?

Ist „git diff“ mit „diff“ verwandt?

Bezieht git diffsich auf diff?

  1. Wird git diffbasierend auf implementiert diff?

  2. Istdie Kommandozeilensyntax vongit diffähnlich zudas vondiff? Hilft es sehr, das eine zu lernen und das andere zu nutzen?

  3. Folgen ihre Ausgabedateien demselben Format? Können sie sowohl von git patchals auch verwendet werden patch? (Gibt es git patch? In welcher Beziehung steht es zu patch?)

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 patchist git apply. Es inszeniert die Änderungen im Index und wendet sie auf den Arbeitsbaum an.

Ich erinnere mich, git applydass 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

verwandte Informationen