Wie Diff-Algorithmen funktionieren
Jede Diff-Ansicht auf dieser Seite wird durch den Myers-Algorithmus erzeugt — eine Technik aus dem Jahr 1986 von Eugene W. Myers, die das kürzeste Edit-Script zwischen zwei Token-Sequenzen in O((N+M)D) Zeit findet, wobei D die Edit-Distanz ist. Der Algorithmus basiert auf dem Longest-Common-Subsequence-Problem und läuft vollständig in Ihrem Browser mithilfe der Open-Source-Bibliothek jsdiff.
- Eingaben tokenisieren — Vor dem Vergleich teilt der Algorithmus jede Eingabe in eine Sequenz von Tokens auf. Zeilengranularität teilt an Zeilenumbrüchen; Wortgranularität an Leerzeichen- und Satzzeichengrenzen; Zeichengranularität behandelt jeden Unicode-Codepunkt als eigenes Token.
- Den Edit-Graphen aufbauen — Der Myers-Algorithmus modelliert den Vergleich als Pfad durch ein 2D-Gitter, wo Rechts-Bewegung „aus Original löschen” bedeutet, Unten-Bewegung „in Geändertes einfügen” und Diagonal-Bewegung „Token stimmt in beiden überein”. Der Algorithmus findet den kürzesten diagonal-gewichteten Pfad.
- Das LCS extrahieren — Die diagonalen Bewegungen im kürzesten Pfad verfolgen die Longest Common Subsequence — die Tokens, die in beiden Eingaben in derselben relativen Reihenfolge vorkommen. Jedes Token im LCS ist „unverändert”; alles andere ist entweder eine Ergänzung oder eine Löschung.
- Vorverarbeitungsoptionen anwenden — Wenn Sie „Groß-/Kleinschreibung ignorieren” aktivieren, werden beide Eingaben vor dem LCS-Durchlauf in Kleinbuchstaben umgewandelt, sodass „HALLO” und „hallo” als identisch gelten. „Leerzeichen ignorieren” fasst mehrere Leerzeichen zu einem zusammen. „Jede Zeile kürzen” entfernt führende und abschließende Leerzeichen pro Zeile vor dem Vergleich.
- Die gewählte Ansicht rendern — Die Ausgabe ist dasselbe LCS-Ergebnis in drei Darstellungsformen: Nebeneinander zeigt das Original links und das Geänderte rechts in einem zweispaltigen Raster mit roten und grünen Zeilen-Highlights. Unified zeigt eine einzige Spalte mit − und +-Präfixzeilen, wie die Ausgabe von
git diff. Inline zeigt Löschungen als roten Durchstrich und Ergänzungen als grüne Unterstreichung innerhalb desselben Textflusses. - Die Zusammenfassungsleiste berechnen — Nach dem Rendern zählt das Tool, wie viele Tokens hinzugefügt, entfernt und unverändert wurden, und berechnet die Ähnlichkeit als Verhältnis der unveränderten Tokens zur größeren der beiden Eingabelängen. Eine Ähnlichkeit von 100% bedeutet, dass die Eingaben nach der Vorverarbeitung identisch sind.
Warum einen Diff Checker verwenden
- Code-Review ohne Git-Client — Zwei Versionen einer Konfigurationsdatei, einer SQL-Migration oder eines Shell-Scripts einfügen und sehen, was sich geändert hat, ohne ein Repository zu klonen, Branches zu wechseln oder auf eine CI-Pipeline zu warten. Das Tool ist nützlich für schnelle Reviews beim Pair-Programming, für Auftragnehmer-Übergaben, bei denen die andere Seite ihre Git-Historie nicht geteilt hat, und für Legacy-Codebasen, die es noch vor der Versionskontrolle gibt. Die Unified-Ansicht produziert eine Ausgabe, die direkt in einen Chat-Thread oder ein Ticket eingefügt werden kann.
- Vertrags- und Dokument-Redlines — Der Wort-Level-Diff zeigt, welche Begriffe zwischen Vertragsentwürfen schneller gewechselt haben als Words Track-Changes-Panel. Klausel A aus dem ersten Entwurf und Klausel B aus der ausgeführten Kopie einfügen, und die Substitution leuchtet rot-auf-grün an der genauen Phrase auf, die sich verändert hat. Juristen und Beschaffungsteams nutzen das, um zu überprüfen, dass last-minute-Redlines nicht unbemerkt durch die Prüfung geschlüpft sind, bevor ein Vertrag unterzeichnet wird.
- Essay- und Entwurfs-Revisionen — Autoren, die einen ersten Entwurf mit einer redigierten Version vergleichen, können zur Wort-Granularität wechseln, um jede Substitution, Einfügung und Kürzung zu sehen, ohne beide Kopien erneut zu lesen. Derselbe Workflow funktioniert für Übersetzer, die Änderungen gegen den Quelltext prüfen, für Lektoren, die überprüfen, dass ein Korrektorat die Stimme des Autors bewahrt hat, und für Redaktionsteams, die einen veröffentlichten Artikel mit dem eingereichten Entwurf abgleichen.
- Log- und Konfigurationsvergleich — Sysadmins, die zwei Server-Konfigurations-Snapshots, zwei Cron-Zeitpläne oder zwei
ps aux-Ausgaben vergleichen, können Zeilengranularität verwenden, um den einzelnen geänderten Parameter in einer 200-Zeilen-Datei in Sekunden zu finden. In Kombination mit der Leerzeichen-ignorieren-Option fällt ein lärmiges Ausrichtungs-Diff auf die Parameteränderungen zusammen, die wirklich wichtig sind.
Häufige Anwendungsfälle
Text-Diff taucht am Ende jedes Bearbeitungszyklus in Schreib-, Entwicklungs- und Betriebsarbeit auf.
- Pull-Request-Review: Zwei Funktionsimplementierungen nebeneinander einfügen, um die Logikänderung zu verstehen, bevor man zustimmt, ohne den Overhead des Branch-Checkouts.
- Internationalisierungs-QA: Einen englischen Quell-String mit seinem übersetzten Äquivalent auf Wort-Ebene vergleichen, um Einfügungen, Auslassungen oder Terminologie-Tausche zu erkennen, die der Übersetzer eingeführt haben könnte.
- Incident-Analyse: Zwei Kubernetes-Manifest-Snapshots oder zwei „docker inspect”-Ausgaben auf Zeilen-Ebene vergleichen, um die Konfigurationsänderung zu isolieren, die einem Ausfall vorausgegangen ist.
Ein Praxisbeispiel
Nehmen Sie eine fünfzeilige Server-Konfiguration. Original: host=localhost, port=5432, dbname=app_db, user=app, password=secret. Geändert: host=db.prod.example.com, port=5432, dbname=app_db, user=app_prod, password=secret. Mit Zeilengranularität und Nebeneinander-Ansicht zeigt Zeile 1 rot links (host=localhost) und grün rechts (host=db.prod.example.com), Zeile 4 zeigt rot (user=app) und grün (user=app_prod), und die Zeilen 2, 3 und 5 bleiben auf beiden Seiten unverändert. Die Zusammenfassungsleiste meldet 2 Ergänzungen, 2 Löschungen, 3 unverändert und eine Ähnlichkeit von 60% — drei von fünf Zeilen beibehalten. Zur Wort-Granularität wechseln und der Diff verfeinert sich weiter: nur die Werte rechts von = in Zeilen 1 und 4 leuchten auf, die Schlüssel bleiben unverändert, und die Ähnlichkeit steigt auf etwa 85%, weil das LCS jetzt host, user und die umgebende Interpunktion als beibehalten zählt.
Läuft das in meinem Browser?
Ja. Die gesamte Diff-Berechnung läuft clientseitig mithilfe der Open-Source-Bibliothek jsdiff, die mit der Seite geladen wird. Nichts, was Sie tippen, einfügen oder vergleichen, wird an irgendeinen Server gesendet. Sie können das selbst überprüfen: Browser-DevTools öffnen, zum Netzwerk-Tab wechseln, das Log leeren, auf Vergleichen klicken und bestätigen, dass für den Vergleichsschritt null Netzwerkanfragen abgefeuert werden.
Was bedeutet der Ähnlichkeitsprozentsatz?
Die Ähnlichkeit wird berechnet als unveränderte Tokens / max(Gesamttokens im Original, Gesamttokens im Geänderten). Ein Wert von 100% bedeutet, dass die beiden Eingaben nach Anwendung Ihrer Vorverarbeitungsoptionen (Groß-/Kleinschreibungs-Angleichung, Leerzeichen-Zusammenführung, Zeilen-Kürzung) identisch sind. Ein Wert von 0% bedeutet, dass kein Token zwischen den Eingaben geteilt wird. Die Metrik ist eine grobe Annäherung an die Edit-Distanz — nützlich als schnelle Einschätzung — kein Plagiat- oder Originalitätswert.
Kann ich JSON / YAML / XML semantisch vergleichen?
Nicht mit diesem Tool. Das ist ein Text-Level-Diff, sodass rein formatierende Änderungen in JSON oder XML noch viele Unterschiede anzeigen, obwohl die Daten logisch identisch sind. Das Neuordnen von Objekt-Schlüsseln in JSON zeigt ebenfalls Änderungen, obwohl die meisten Parser die Schlüsselreihenfolge als unbedeutend betrachten. Für einen echten semantischen Diff, der geparste Objektbäume vergleicht und Schlüsselreihenfolge sowie Formatierung ignoriert, planen wir ein dediziertes JSON-Diff-Tool. Vorerst beide Eingaben auf denselben Einrückungsstand und dieselbe Schlüsselreihenfolge bringen, bevor sie hier eingefügt werden.
Wie unterscheiden sich Unified- und Nebeneinander-Ansichten?
Nebeneinander zeigt zwei Spalten: das Original links und die geänderte Version rechts, mit entfernten Zeilen rot links und hinzugefügten Zeilen grün rechts markiert. Unveränderte Zeilen erscheinen in beiden Spalten auf derselben Zeile ausgerichtet. Unified zeigt eine einzige Spalte mit einem −-Präfix und rotem Hintergrund für entfernte Zeilen und einem +-Präfix und grünem Hintergrund für hinzugefügte Zeilen — dasselbe Layout, das git diff in Ihrem Terminal ausgibt. Unified verwenden, wenn das Ergebnis als Patch-Datei kopiert oder in einen Code-Review-Thread eingefügt werden soll. Nebeneinander verwenden, wenn die visuelle Ausrichtung dessen, was was ersetzt hat, wichtiger ist als der rohe Patch-Text.
Original links, geänderte Version rechts einfügen, Ansicht und Granularität wählen — der Vergleich erscheint in Millisekunden. Live-Modus einschalten und der Diff wird bei jeder Tastatureingabe auf beiden Seiten neu ausgeführt. Ergebnis als Standard-Unified-.patch-Datei herunterladen, die git apply direkt verarbeiten kann. Kein Upload, kein Konto, kein Anbieter-API-Schlüssel, kein Kontingent.