Textvergleich (Diff)

Vergleicht zwei Textblöcke Zeile für Zeile und zeigt hinzugefügte und entfernte Zeilen farblich markiert an. Nützlich, um Änderungen an Konfigurationsdateien zu prüfen, Dokumente Korrektur zu lesen oder Code ohne Git zu überprüfen. Die gesamte Berechnung erfolgt im Browser; eingegebene Inhalte werden nie an einen Server gesendet.

Zwei Texte zeilenweise vergleichen

Zu diesem Werkzeug greift man, wenn man feststellen will, was sich an einer Konfigurationsdatei geändert hat oder an welcher Stelle ein Text überarbeitet wurde. Es stellt zwei Texte Zeile für Zeile gegeneinander und hebt hinzugefügte und entfernte Zeilen in verschiedenen Farben hervor. Alles wird im Browser berechnet, sodass nichts von dem Eingefügten Ihr Gerät verlässt.

**Beim Lesen des Ergebnisses sollte man wissen, dass ein Vergleichsverfahren die kürzeste Folge von Änderungen sucht.** Deshalb **drückt die Maschine das, was ein Mensch als „dieser Absatz ist nach unten gewandert" sieht, als Entfernung samt zugehöriger Hinzufügung aus.** Eine Schreibweise für das Verschieben als solches gibt es nicht. Zum anderen läuft der Vergleich zeilenweise, sodass **eine Zeile, die sich in einem einzigen Zeichen unterscheidet, als ganze als geändert gemeldet wird.** Am verwirrendsten ist hier ein Unterschied in den Zeilenenden oder im Leerraum am Zeilenschluss, der jede Zeile als geändert ausweisen kann, obwohl nichts anders aussieht. Fällt ein Vergleich unwahrscheinlich groß aus, ist das der erste Verdacht.

So gehen Sie vor

  1. Fügen Sie das Original in A ein Geben Sie den Inhalt so ein, wie er vor der Änderung war.
  2. Fügen Sie die Überarbeitung in B ein Geben Sie den Inhalt so ein, wie er nach der Änderung lautet.
  3. Lesen Sie die farbigen Unterschiede **Hinzugefügte und entfernte Zeilen erscheinen in verschiedenen Farben.**
  4. Verdächtigen Sie die Zeilenenden, wenn der Vergleich riesig ausfällt **Allein ein Unterschied in Zeilenenden oder abschließendem Leerraum weist jede Zeile als geändert aus.**

Tipps für die Nutzung

  • Füge die Vorher- und Nachher-Version einer Konfigurationsdatei (.env, YAML, JSON usw.) ein, um sofort zu sehen, welche Zeilen hinzugefügt oder entfernt wurden.
  • Auch ohne installiertes Git lässt sich allein durch Kopieren und Einfügen zweier Versionen ein einfaches Code-Review oder Korrekturlesen durchführen.
  • Eine Zeile, die einfach an eine andere Position verschoben wurde, wird als Entfernen plus Hinzufügen erkannt, nicht als "Verschieben" — das sollte man beim Lesen des Ergebnisses bedenken.
  • Leerzeichen, Zeilenumbrüche und Groß-/Kleinschreibung werden streng verglichen, sodass eine Zeile, die nur ihre Einrückung geändert hat, ebenfalls als geändert markiert wird.
  • Bei langen Texten hilft es, vor dem Einfügen jeden Absatz in eine eigene Zeile zu setzen, damit die Unterschiede pro Absatz auf einen Blick erkennbar sind.

Wofür Sie es nutzen können

Um eine Änderung an einer Konfigurationsdatei zu prüfen

Ehe sie in den Wirkbetrieb geht, sehen Sie, dass sich nur das geändert hat, was Sie ändern wollten.

Um das Ergebnis einer Überarbeitung abzugleichen

**Entwurf und Neufassung nebeneinandergestellt, lässt sich auf einen Blick verfolgen, wo Hand angelegt wurde.**

Um ohne Git zu prüfen

Dateien, die nie unter Versionsverwaltung standen, lassen sich ebenso vergleichen, indem man sie einfach einfügt.

Um die Wiederholbarkeit einer Ausgabe zu bestätigen

Vergleichen Sie die Ergebnisse zweier Durchläufe desselben Vorgangs und bestätigen Sie, dass nichts auseinandergeht.

Begriffe zum Vergleich

Hinzugefügte Zeile
Eine nur in B vorhandene Zeile.
Entfernte Zeile
Eine nur in A vorhandene Zeile. **Auch eine bloß verschobene Zeile taucht als Entfernung samt Hinzufügung auf.**
Zeilenweiser Vergleich
Ein Vergleich, der jede Zeile als Einheit behandelt. **Ein Unterschied von einem Zeichen weist die ganze Zeile als geändert aus.**
Zeilenende
Das Zeichen, das den Schluss einer Zeile markiert: CRLF unter Windows, LF auf unixartigen Systemen. **Ein Unterschied hier kann sich zeigen, als wichen alle Zeilen voneinander ab.**
Abschnitt
Ein einzelner Block innerhalb eines Vergleichs, in dem sich die Änderungen sammeln.
Umgebung
Die unveränderten Zeilen ober- und unterhalb einer geänderten, mit aufgeführt, damit sich die Stelle leichter einordnen lässt.

Häufig gestellte Fragen

Es hilft dabei, zeilenweise Änderungen in Konfigurationsdateien oder Dokumenten zu erkennen, Code ohne Git zu überprüfen oder Änderungen in einem Vertrag oder in Nutzungsbedingungen nachzuvollziehen — überall dort, wo man sehen muss, was sich zwischen zwei Textversionen geändert hat.

Das CSV-Diff-Tool gleicht tabellarische Daten anhand einer Schlüsselspalte zeilenweise ab und vergleicht dann Zelle für Zelle. Dieses Tool vergleicht dagegen freien Text ohne Spaltenstruktur zeilenweise und eignet sich daher eher für Konfigurationsdateien oder Fließtext als für Tabellen.

Das JSON-Diff-Tool analysiert die Struktur von JSON (Objekte und Arrays) und vergleicht anhand von Schlüsseln. Dieses Tool analysiert keinerlei Struktur, sondern behandelt jede Zeile einfach als Zeichenkette und funktioniert daher mit beliebigem Text, nicht nur mit JSON.

Umsortierte Zeilen werden nicht als "Verschiebung" erkannt. Stattdessen erscheinen sie als Entfernen an der alten Position und Hinzufügen an der neuen Position. Das entspricht dem Verhalten von Gits diff-Befehl und den meisten zeilenbasierten Diff-Algorithmen.

Nein. Die gesamte Berechnung der Unterschiede läuft im JavaScript des Browsers ab, und der eingegebene Text wird nie an einen Server übertragen — die Nutzung ist daher auch bei vertraulichen Inhalten unbedenklich.
Tool-kun

Übrigens – wie LCS (längste gemeinsame Teilsequenz) Textunterschiede berechnet

Der bekannteste Algorithmus zur Erkennung von Unterschieden zwischen zwei Texten ist der in den 1970er-Jahren vom IBM-Informatiker Eugene Myers veröffentlichte "Myers-Diff-Algorithmus". Der `diff`-Befehl großer Versionsverwaltungssysteme wie Git und SVN basiert auf dieser Algorithmenfamilie und erkennt effizient zeilenweise hinzugefügte und entfernte Inhalte. Auch dieses Tool folgt diesem Grundgedanken und berechnet die längste gemeinsame Teilsequenz (LCS), um das Ergebnis auf die minimal nötigen Änderungen zu reduzieren.

Die längste gemeinsame Teilsequenz (LCS) ist die längste Folge, die in gleicher Reihenfolge in beiden verglichenen Sequenzen vorkommt — hier die Folge der Zeilen. Der Unterschied zwischen zwei Texten ergibt sich, indem jede Zeile, die nicht Teil dieser LCS ist, als "entfernt" oder "hinzugefügt" gilt; je länger die LCS, desto weniger Änderungen werden angezeigt. Eine Technik namens dynamische Programmierung (DP) macht diese Berechnung auch bei sehr vielen Zeilen praktikabel.

Diff-Algorithmen haben eine bekannte Schwäche: Wenn eine Zeile lediglich an eine andere Position verschoben wird, erkennen die meisten Implementierungen dies nicht als "Verschiebung", sondern zeigen es als Entfernen zusammen mit einem Hinzufügen. Deshalb kann der Vergleich von Texten, deren Zeilenreihenfolge stark durcheinandergebracht wurde, mehr Unterschiede zeigen, als tatsächlich geändert wurde. Wer diese Eigenheit kennt, kann Diff-Ergebnisse besser einordnen.