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
- Fügen Sie das Original in A ein Geben Sie den Inhalt so ein, wie er vor der Änderung war.
- Fügen Sie die Überarbeitung in B ein Geben Sie den Inhalt so ein, wie er nach der Änderung lautet.
- Lesen Sie die farbigen Unterschiede **Hinzugefügte und entfernte Zeilen erscheinen in verschiedenen Farben.**
- 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
Ü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.