Wie diff funktioniert
Ein Diff findet die kleinste Menge an Einfügungen und Löschungen, die eine Zeilenfolge in eine andere verwandelt. Der klassische Algorithmus (Myers, 1986, von git und GNU diff genutzt) findet die längste gemeinsame Teilfolge in einer Zeit proportional zur Zahl der Unterschiede, sodass der Vergleich zweier fast identischer großer Dateien schnell ist. Diese Seite lässt ihn zuerst auf Zeilen laufen und dann auf Zeichen in jedem geänderten Paar; so erscheint eine Ein-Wort-Änderung als ein hervorgehobenes Wort statt als zwei ganze Zeilen.
Einen Unified Diff lesen
--- old.txt
+++ new.txt
@@ -12,7 +12,8 @@
Kontextzeile
-entfernte Zeile
+hinzugefügte Zeile
+weitere hinzugefügte Zeile
Kontextzeile Der @@-Header gibt Zeilennummer und Länge des Hunks in jeder Datei an. Zeilen mit Leerzeichen am Anfang sind unveränderter Kontext, - steht nur in der alten Datei, + nur in der neuen. patch -p0 < changes.patch wendet ihn an; git apply funktioniert auch. Die Kontextzeilen lassen patch die richtige Stelle finden, auch wenn sich die Datei verschoben hat.
Optionen
Leerraum ignorieren behandelt Zeilen, die sich nur in Leerzeichen oder Tabs unterscheiden, als gleich, was Formatierungsrauschen verbirgt und die echten Änderungen zeigt. Groß-/Kleinschreibung ignorieren tut dasselbe für die Schreibung. Der Unified Diff zeigt weiterhin die Originalzeilen; die Optionen beeinflussen nur, welche Zeilen als geändert zählen.
Grenzen
Alles läuft in Ihrem Browser; ein paar tausend Zeilen vergleichen sich in deutlich unter einer Sekunde. Sehr große Eingaben (über etwa 2.000 Zeilen je Seite mit vielen Unterschieden) werden abgelehnt, damit die Seite reaktionsfähig bleibt; dafür nutzen Sie lokal diff oder git diff --no-index a b.
Fragen
Wie vergleiche ich zwei Dateien?
Öffnen Sie jede in einem Editor und kopieren Sie den Inhalt in die zwei Felder. Für Dateien auf einem Server erzeugen diff -u alt neu oder git diff --no-index alt neu dasselbe Unified-Format, ohne das Terminal zu verlassen.
Was bedeutet die Hervorhebung innerhalb einer Zeile?
Innerhalb eines Paars geänderter Zeilen sind die Zeichen markiert, die sich unterscheiden; unveränderte Zeichen werden normal gezeigt. Es ist ein zweiter Diff-Lauf auf Zeichenebene für dieses Paar.
Kann es JSON oder Code vergleichen?
Ja; es vergleicht Text. Bei JSON formatieren Sie zuerst beide Seiten (das macht der JSON-Formatter), damit jeder Schlüssel auf einer eigenen Zeile landet und der Diff echte Änderungen zeigt statt einer riesigen Zeile.
Wird mein Text hochgeladen?
Nein. Der Vergleich läuft in JavaScript in Ihrem Browser. Die Website hat kein Backend, das ihn empfangen könnte.