Textvergleich und Zusammenführung
Fügen Sie zwei Textversionen ein und vergleichen Sie sie zeilenweise mit farblich markierten Unterschieden.
Vergleichsergebnis
So funktioniert es
- Fügen Sie zwei Texte ein: Geben Sie den Originaltext im linken Feld und den überarbeiteten Text im rechten Feld ein.
- Diff anzeigen: Geänderte Zeilen werden hervorgehoben, Grün für Hinzufügungen, Rot für Löschungen und Gelb für Änderungen.
- Diff prüfen: Scrollen Sie durch die farbcodierte Ausgabe und kopieren oder fotografieren Sie die benötigten Stellen.
Eine kurze Geschichte des Diff
Der moderne Textvergleich begann bei Bell Labs. Douglas McIlroy (derselbe McIlroy, der Unix-Pipes erfand) und James W. Hunt schrieben Anfang der 1970er Jahre das ursprüngliche Unix-diff; es wurde 1974 als Teil der 5. Edition von Unix ausgeliefert. Der Algorithmus wurde im Bell Laboratories Computing Science Technical Report Nr. 41 (Juni 1976) dokumentiert, einem internen Bericht mit dem Titel „An Algorithm for Differential File Comparison". Der Hunt-McIlroy-Algorithmus baut auf dem Problem der längsten gemeinsamen Teilsequenz (LCS) auf, finde die längste Folge von Zeilen, die in der Reihenfolge in beiden Eingaben erscheint, und alles, was nicht in dieser Folge ist, ist entweder eine Löschung oder eine Einfügung. Ein Jahrzehnt später veröffentlichte Eugene W. Myers „An O(ND) Difference Algorithm and Its Variations" in Algorithmica, Band 1, Heft 2 (1986). Myers formulierte das Problem als Kürzester-Weg-Suche über einen „Edit-Graphen" um und zeigte, dass es in O(ND) Zeit und Raum gelöst werden kann, wobei N die Eingabegröße und D die Größe des minimalen Edit-Skripts ist. Für typische Eingaben, Dateien, die sich nur an wenigen Stellen unterscheiden, ist D klein, sodass der Algorithmus in der Praxis schnell ist. Myers' Paper wurde die Basis für eine schnellere Unix-diff-Implementierung, die zwei- bis viermal schneller als ihr Vorgänger lief und qualitativ hochwertigere Ausgaben produzierte. Patience-Diff (Bram Cohen, 2008) ist eine LCS-Verfeinerung, die einzigartige Anker-Zeilen priorisiert und lesbarere Diffs um verschobene Blöcke produziert. Der aktuelle Standard in git diff ist der Histogramm-Algorithmus in LibXDiff, allgemein als schneller als der ursprüngliche Myers angesehen und produziert lesbarere Diffs bei Vorhandensein verschobener Blöcke (er wurde Gits Standard in 2.11, veröffentlicht am 29. November 2016). Die mathematischen Grundlagen gehen noch tiefer: Die Levenshtein-Distanz (Vladimir Levenshtein, 1965) ist der zeichenbezogene Cousin des LCS-Problems, und die Wagner-Fischer-Dynamische-Programmierung-Lösung (1974) ist das, was jede „Fuzzy-Match"-Bibliothek noch intern implementiert.
Wie ein Diff gerendert wird
Es gibt vier gängige visuelle Konventionen zur Anzeige eines Diffs. Seite-an-Seite, zwei Spalten, Original links, modifiziert rechts, mit entsprechenden Zeilen aufeinander ausgerichtet. Gut für Vergleich auf einen Blick; funktioniert gut bei Desktop-Breiten, wird aber auf schmalen mobilen Viewports unlesbar. Inline Unified Diff, eine einzelne Spalte, die entfernte Zeilen zeigt (typischerweise mit - vorangestellt und rot gefärbt), hinzugefügte Zeilen (+, grün) und unveränderte Kontextzeilen (kein Präfix, einfacher Text). Das Layout, das git diff standardmäßig verwendet. Skaliert gut auf Mobil, verliert aber den räumlichen Parallelismus von Seite-an-Seite. Wort-Level-Diff, hebt nur die Wörter hervor, die sich innerhalb geänderter Zeilen geändert haben. Nützlich für Prosa-Vergleich, wo der Großteil des Textes unverändert ist, aber bestimmte Phrasen bearbeitet wurden. Zeichen-Level-Diff, hebt jedes geänderte Zeichen einzeln hervor. Nützlich für sehr kleine Änderungen (eine Tippfehler-Korrektur, eine Einzelziffer-Bearbeitung), wo Wort-Level das gesamte Wort hervorheben würde. Die Farbkonventionen sind im gesamten Ökosystem bemerkenswert konsistent: Grün für Ergänzungen, Rot für Entfernungen, Gelb oder Bernstein für geänderte Werte, neutrales Grau oder ungestylt für unverändert. Dieses Werkzeug verwendet den Inline-Unified-Stil mit Zeichen-Level-Hervorhebung innerhalb geänderter Zeilen, ein Hybrid, der gut auf Mobil skaliert und gleichzeitig die Präzision des Zeichen-Level-Vergleichs für Prosa-Bearbeitungen bewahrt.
Drei-Wege-Merge, wenn sich zwei Diffs verbinden müssen
Ein Zwei-Wege-Diff (dieses Werkzeug) sagt dir, was sich zwischen Version A und Version B geändert hat. Ein Drei-Wege-Merge beantwortet eine schwierigere Frage: Gegeben ein gemeinsamer Vorfahre und zwei divergente Revisionen, was ist das kombinierte Ergebnis, das beide Änderungssätze einbezieht? Dies ist die Kernoperation jedes Versionskontrollsystems, wenn zwei Entwickler dieselbe Datei unabhängig bearbeiten und einer versucht, ihre Arbeit zusammenzuführen, muss das System beide Diffs auf das Original anwenden. Der diff3-Algorithmus, formalisiert von Khanna, Kunal und Pierce (2007), ist die Basis. Die Sieben-Zeichen-Konfliktmarker-Konvention, <<<<<<<, =======, >>>>>>>, die Git in Dateien einfügt, wenn ein automatisierter Merge fehlschlägt, stammt direkt aus dieser Linie. Moderne visuelle Merge-Werkzeuge (VS Codes Drei-Bereich-Merge-Editor, standardmäßig aktiviert seit 1.69 im Juni 2022; Beyond Compare von Scooter Software, seit 1996; Meld; Kaleidoscope von Black Pixel für macOS) handhaben Drei-Wege-Merges mit Seite-an-Seite-Rendering aller drei Versionen plus einem vierten Bereich für das vorgeschlagene Merge-Ergebnis. Dieses Werkzeug konzentriert sich auf Zwei-Wege-Vergleich, Drei-Wege-Merging gehört in einen echten Versionskontroll-Workflow.
Häufige Anwendungsfälle
- Code-Review. Zwei Versionen einer Funktion oder eines Moduls einfügen, um die Änderung schnell zu erkennen, besonders wenn außerhalb eines Git-Workflows gearbeitet wird (ein Snippet aus der E-Mail eines Kollegen, eine Stack Overflow-Antwort gegen deinen aktuellen Code).
- Vergleich juristischer Verträge. Anwälte und Vertragsverhandler vergleichen routinemäßig zwei Versionen eines Vertrags, um zu sehen, was die andere Seite geändert hat. Der Legal-Tech-Begriff ist „blackline"- oder „redline"-Vergleich; Produkte wie Draftable spezialisieren sich darauf.
- Prosa-Bearbeitung. Vergleichen des Entwurfs eines Autors mit der Überarbeitung eines Lektors oder zwei Versionen eines Artikels. Microsoft Words Änderungen nachverfolgen tut das im Produkt; für Klartext- oder Markdown-Entwürfe ist ein Diff-Werkzeug das Äquivalent.
- Konfigurationsabweichung. Vergleich einer Konfigurationsdatei in Produktion mit der Version in der Quellcodeverwaltung, die Lücke ist die Abweichung. Gleicher Workflow für umgebungsspezifische Konfigurationen (Dev vs Staging vs Produktion).
- Log-Vergleich. Zwei Log-Dateien aus verschiedenen Läufen desselben Prozesses diffen, um den Divergenzpunkt zu finden.
- Lokalisierungs-Review. Übersetzer diffen häufig eine neue englische Quelle gegen die vorherige Version, um genau zu identifizieren, was neu ist und übersetzt werden muss.
Das Diff-Ökosystem im Jahr 2026
Über git diff und Unix diff hinaus verdienen mehrere spezialisierte Diff-Werkzeuge Erwähnung. Beyond Compare (Scooter Software, 1996) ist das langjährige kommerzielle Ordner- und Datei-Vergleichswerkzeug, beliebt bei Entwicklern und IT-Profis für maschinenübergreifendes Diffen. Meld (Open Source, GTK-basiert) ist der GNOME-Standard. Kaleidoscope (Black Pixel, macOS) integriert sich mit Versionskontrolle und ist die De-facto-Wahl für viele Mac-Entwickler. VS Codes eingebauter Diff-Editor handhabt Zwei- und Drei-Wege-Vergleiche nativ; der Drei-Bereich-Merge-Editor wurde in 1.69 (Juni 2022) standardmäßig aktiviert. Mergely (Wayne Stidolph, 2013, MIT-lizenziert) ist der kanonische browserbasierte Zwei-Wege-Merge-Editor, der auf CodeMirror aufbaut. jsdiff (Kevin Decker, ~2010) ist die dominierende JavaScript-Diff-Bibliothek, verwendet von jedem browserbasierten Diff-Werkzeug, in das du jemals eingefügt hast. diff-match-patch (Neil Fraser bei Google, 2006) ist die alternative Bibliothek, die Diffing, Fuzzy-Matching und Patch-Generierung in einer einzigen API behandelt; verwendet in der Revisionshistorie von Google Docs. Diffchecker ist der dominierende Freemium-Online-Diff-Dienst, voll ausgestattet, aber mit Datenschutz hinter einer Paywall (die kostenlose Stufe sendet Text an ihren Server). text-compare.com ist die am längsten laufende reine Text-Diff-Web-Site, veraltete UI, aber funktional.
Datenschutz: Warum nur-Browser hier besonders wichtig ist
Jeder Diff offenbart genau, was sich zwischen zwei Versionen geändert hat, und was sich geändert hat, ist oft sensibler als jede Version allein. Drei konkrete Szenarien, in denen dies akut wichtig ist. Sicherheitspatches: Eine anfällige Version einer Funktion gegen die gepatchte Version zu diffen, offenbart den genauen Ort und die Natur eines Sicherheits-Bugs, ein Angreifer, der den Patch findet, kann einen Exploit für die ungepatchte Version erstellen (der „Patch-Gap"-Angriff, dokumentiert von Tian et al. bei USENIX Security 2017). Einen Sicherheitspatch in ein serverseitiges Diff-Werkzeug einzufügen, bedeutet im Wesentlichen, die Schwachstelle zu veröffentlichen. Vertragsverhandlung: Zwei Versionen eines Vertrags zu diffen, offenbart genau, welche Klauseln jeder Seite wichtig sind, was genau die Information ist, die du nicht möchtest, dass die andere Seite (oder jemand, der das Netzwerk beobachtet) während der Verhandlung hat. Vorveröffentlichungs-Redaktionsentscheidungen: Ein Manuskript vor und nach dem Editieren zu diffen, offenbart, was ein Autor und Editor zu schneiden oder zu ändern beschlossen haben, oft aufschlussreicher als die endgültige veröffentlichte Version. Serverseitige Diff-Werkzeuge laden beide Versionen zu einem Dritten hoch, wo sie in Logs liegen. Dieses Werkzeug läuft vollständig in deinem Browser über JavaScript, überprüfe es im Netzwerk-Tab von DevTools, während du auf Vergleichen klickst, oder nimm die Seite offline (Flugmodus) nach dem Laden, und das Werkzeug funktioniert immer noch.
Häufige Fragen
Kann ich Code-Dateien vergleichen?
Ja. Fügen Sie beliebigen Text ein, einschließlich Code, JSON, HTML, Markdown oder Klartext. Der Vergleich ist rein textbasiert und funktioniert daher mit jedem Format.
Werden Leerzeichen-Unterschiede ignoriert?
Aktivieren Sie die Option „Leerzeichen ignorieren", um Unterschiede zu überspringen, die nur Leerzeichen oder Zeilenenden betreffen. Nützlich beim Vergleichen von Code, der neu formatiert, aber inhaltlich nicht verändert wurde.
Welchen Algorithmus verwendet das?
Myers' O(ND)-Algorithmus (Eugene Myers, Algorithmica Band 1 Nr. 2, 1986), derselbe Algorithmus, den GNU diff jahrzehntelang standardmäßig verwendete, und die Basis für die meisten Text-Diff-Implementierungen. Myers formulierte das Problem der längsten gemeinsamen Teilsequenz als Kürzester-Weg-Suche über einen Edit-Graphen um, was es in der Praxis für Eingaben, die sich nur an wenigen Stellen unterscheiden, schnell machte. Der neuere Histogramm-Algorithmus (Gits aktueller Standard seit v2.11, November 2016) handhabt verschobene Blöcke etwas besser, ist aber für den typischen Zwei-Einfügung-Anwendungsfall, den dieses Werkzeug handhabt, übertrieben.
Gibt es eine Größenbeschränkung?
Keine harte Grenze, aber der Vergleich läuft in deinem Browser über JavaScript, sodass die praktische Obergrenze der verfügbare Speicher deines Geräts ist. Zehntausende von Zeilen funktionieren bequem. Sehr große Eingaben (Log-Dateien mit mehreren Megabyte, ganze Romane) werden laufen, können aber merkliche Sekunden zum Rendern benötigen. Für wirklich riesige Eingaben verwende Gits diff auf der Kommandozeile, es streamt die Ausgabe und handhabt Dateien beliebiger Größe ohne Speicherdruck.
Kann es Drei-Wege-Merges durchführen oder Patches anwenden?
Derzeit nicht, dieses Werkzeug konzentriert sich auf Zwei-Wege-Vergleich (A vs B). Der Drei-Wege-Merge (der diff3-Algorithmus mit Konfliktmarkern <<<<<<< / ======= / >>>>>>>) ist die Operation, die Git beim Mergen von Branches verwendet; sie erfordert einen gemeinsamen Vorfahren plus zwei divergente Versionen. Für Drei-Wege-Merge verwende ein echtes Versionskontrollsystem oder ein dediziertes Werkzeug wie VS Codes Drei-Bereich-Merge-Editor (standardmäßig aktiviert seit 1.69 im Juni 2022).
Werden meine Texte hochgeladen?
Nein. Der Vergleich läuft vollständig in deinem Browser über JavaScript. Die Texte, die du einfügst, überqueren nie das Netzwerk, überprüfe es im Netzwerk-Tab von DevTools, während du auf Vergleichen klickst, oder nimm die Seite offline (Flugmodus) nach dem Laden, und das Werkzeug funktioniert immer noch. Besonders sicher für das Diffen von Sicherheitspatches (wo der Diff selbst die Schwachstelle offenbart), Vertragsrevisionen (wo der Diff Verhandlungspositionen offenbart) oder vorveröffentlichungs-redaktionellen Entwürfen.