Vergleichen Sie zwei Textblöcke und sehen Sie die Unterschiede.
+3 hinzugefügt-2 entfernt
-function greet(name) {
+function greet(name, greeting = "Hello") {
- console.log("Hello " + name);
+ console.log(greeting + " " + name);
}
greet("World");
+greet("Alice", "Hi");
Alle Berechnungen erfolgen lokal in Ihrem Browser. Es werden keine Daten an einen Server gesendet.
Die Ergebnisse dienen zur Information. Überprüfen Sie sie anhand anderer Quellen.
Wie Textvergleich funktioniert
Ein Diff findet die kleinste Menge an Einfügungen und Löschungen, die einen Text in einen anderen überführt. Es erkennt nicht, dass eine Zeile „verschoben“ oder „geändert“ wurde — das sind Deutungen, die ein Betrachter über eine Löschung mit folgender Einfügung legt.
So wird gerechnet
- Berechnet die längste gemeinsame Teilfolge beider Eingaben und meldet alles außerhalb davon als hinzugefügt oder entfernt.
- Arbeitet standardmäßig zeilenweise — das macht Diffs für Code lesbar und für umbrochenen Fließtext nutzlos.
- Markiert eine geänderte Zeile als eine Löschung plus eine Einfügung, denn genau das ist sie auf Algorithmusebene.
längste gemeinsame Teilfolge (LCS) nur links vorhandene Zeilen → Löschungen nur rechts vorhandene Zeilen → Einfügungen Zeilen in der LCS → unverändert Ähnlichkeit ≈ 2 × LCS-Länge / (Zeilen links + Zeilen rechts)
Rechenbeispiel
Eine dreizeilige Datei mit einer geänderten und einer hinzugefügten Zeile.
- links: alpha / beta / gamma
- rechts: alpha / BETA / gamma / delta
- LCS = alpha, gamma (2 Zeilen)
- beta → Löschung, BETA → Einfügung, delta → Einfügung
Gemeldet werden drei Änderungen, nicht zwei: die Bearbeitung von beta zählt als Löschung plus Einfügung. Ähnlichkeit = 2 × 2 / (3 + 4) = 57%.
Das Ergebnis lesen
- Ein auf andere Zeilenbreite umbrochener Absatz erzeugt ein Diff, in dem jede Zeile geändert ist, obwohl kaum ein Wort es wurde. Für Fließtext auf wortweises Diff umschalten oder die Quelle vor dem Umbruch vergleichen.
- Leerzeichen am Zeilenende und unterschiedliche Zeilenenden erzeugen Phantomänderungen. Wirkt eine ganze Datei geändert, ohne sichtbaren Unterschied, prüfen Sie zuerst CRLF gegen LF.
- Die Ausgabe hängt davon ab, welche Seite Sie „Original“ nennen. Ein Tausch der Eingaben macht aus jeder Einfügung eine Löschung — relevant beim Lesen eines Reviews.
- Das läuft in Ihrem Browser; eine hier eingefügte vertrauliche Datei wird nicht hochgeladen. Das gilt nicht für jedes Online-Diff-Werkzeug.
Häufige Fragen
- Warum zeigt mein Diff die ganze Datei als geändert?
- Fast immer Zeilenenden oder Einrückung. Eine unter Windows gespeicherte und unter Linux bearbeitete Datei unterscheidet sich unsichtbar in jeder Zeile. Aktivieren Sie den Vergleich ohne Leerraum oder normalisieren Sie zuerst die Zeilenenden.
- Kann es zeigen, dass ich einen Codeblock verschoben habe?
- Nicht direkt — eine Verschiebung ist eine Löschung an einer und eine Einfügung an anderer Stelle, und Standard-Diff meldet es so. Manche Werkzeuge erkennen Verschiebungen als Nachverarbeitung dieser Rohausgabe.