Wie Sie Text vergleichen und Unterschiede finden
Herauszufinden, was sich zwischen zwei Versionen eines Dokuments, einer Konfigurationsdatei oder eines Codeabschnitts geändert hat, ist eine häufige Aufgabe. Beide Versionen zu lesen und Unterschiede manuell zu erkennen, ist langsam und unzuverlässig, besonders bei langen Texten. Ein Diff-Prüfer macht es sofort und hebt jede Änderung hervor. Derselbe Algorithmus, der Gits Commit-Historie, GitHubs Pull-Request-Überprüfungsoberfläche und den Unix-diff-Befehl antreibt, liegt jedem visuellen Diff-Werkzeug zugrunde, das Sie jemals verwendet haben.
So vergleichen Sie Text
- Fügen Sie beide Versionen ein: geben Sie den Originaltext links und den modifizierten Text rechts ein.
- Überprüfen Sie die Hervorhebungen: hinzugefügte Zeilen werden grün angezeigt, entfernte Zeilen rot. Modifizierte Zeilen zeigen sowohl die alte als auch die neue Version.
- Exportieren oder kopieren: kopieren Sie die Diff-Ergebnisse oder laden Sie einen Bericht herunter.
Der Vergleich findet statt, sobald beide Bereiche Text haben. Es gibt keine Vergleichen-Schaltfläche zum Klicken; Bearbeitungen auf beiden Seiten führen den Diff in Echtzeit erneut aus, was nützlich ist, wenn Sie an einer Korrektur iterieren und den Effekt sofort sehen möchten.
Einen Diff lesen
Die Diff-Ausgabe verwendet ein einfaches Farbsystem:
- Grün (hinzugefügt): Zeilen, die in der neuen Version existieren, aber nicht in der alten
- Rot (entfernt): Zeilen, die in der alten Version existierten, aber aus der neuen verschwunden sind
- Unverändert: Zeilen, die in beiden Versionen identisch sind
Dies ist die gleiche Konvention, die von Git, GitHub, GitLab, Bitbucket und jedem wichtigen Versionskontrollsystem verwendet wird. Die Farben sind nicht willkürlich: Grün für Hinzufügungen und Rot für Löschungen ist seit den 1970er Jahren der Standard, als die ersten visuellen Diff-Werkzeuge (wie der Befehl sdiff) auf Unix ausgeliefert wurden. Moderne Werkzeuge fügen manchmal Gelb oder Orange für "geändert" hinzu (eine Zeile, die in beiden existiert, aber anders ist), aber Rot und Grün bleiben die universellen Hinzufügungen/Löschungen.
Eine kurze Geschichte von diff
Der diff-Algorithmus wurde erstmals von Douglas McIlroy bei Bell Labs 1976 veröffentlicht und baut auf Eugene Myers' späterer Verfeinerung (dem O(ND)-Algorithmus, 1986) auf, die diff schnell genug für interaktive Nutzung machte. McIlroys ursprünglicher Algorithmus wurde mit der Unix V7-Veröffentlichung 1979 publiziert und ist seitdem Teil jedes Unix-ähnlichen Betriebssystems. Der Myers-Algorithmus ist das, was moderne diff-Implementierungen antreibt: Gits diff, GitHubs Weboberfläche, jede diff-GUI von Beyond Compare bis VS Code.
Das visuelle Seite-an-Seite-Diff-Format geht dem Algorithmus voraus: es lässt sich auf manuelle Korrekturkonventionen im Verlagswesen zurückführen (zwei Spalten Text mit Änderungen am Rand markiert). Die Software der 1970er Jahre automatisierte einfach, was Redakteure seit Jahrhunderten auf Papier taten. Das "Unified Diff"-Format (das mit den --- und +++ Headern, das Sie in Patch-Dateien sehen) wurde 1990 von GNU diff eingeführt und ist jetzt der De-facto-Standard für das Teilen von Änderungen per Text.
Wann Diff-Prüfung nützlich ist
- Code-Überprüfung: vergleichen Sie Ihre Änderungen mit dem Original, bevor Sie committen, um genau zu sehen, was Sie modifiziert haben
- Dokumentenrevisionen: finden Sie heraus, was sich zwischen zwei Versionen eines Vertrags, Artikels oder einer Richtlinie geändert hat
- Konfigurations-Debugging: vergleichen Sie eine funktionierende Konfigurationsdatei mit einer kaputten, um den Unterschied zu erkennen
- Datenvalidierung: prüfen Sie, ob zwei Datenexporte identisch sind, oder finden Sie heraus, wo sie divergieren
- Merge-Konflikte: verstehen Sie beide Seiten eines Konflikts, bevor Sie ihn lösen
- Übersetzungsüberprüfung: vergleichen Sie ein Originaldokument mit einer Übersetzung, um sicherzustellen, dass keine Abschnitte übersprungen wurden
- E-Mail- oder Nachrichtenvergleich: wenn jemand sagt "Ich habe Ihnen die korrigierte Version geschickt", vergleichen Sie beide Nachrichten, um zu sehen, was sich tatsächlich geändert hat
- Datenbank-Export-Validierung: vergleichen Sie zwei CSV-Exporte aus einer Datenbank, um zu bestätigen, dass ein ETL-Lauf eine identische Ausgabe erzeugt hat
Zeilenbasierter vs. zeichenbasierter Diff
Der Diff-Prüfer verwendet zeilenbasierten Vergleich, was bedeutet, dass er jede Zeile als kleinste Einheit des Unterschieds behandelt. Wenn Sie ein einzelnes Wort in einer Zeile ändern, wird die gesamte Zeile als geändert angezeigt (die alte Zeile rot, die neue Zeile grün) und Sie müssen den Unterschied auf Wortebene selbst erkennen.
Zeilenbasierter Diff ist der Standard für Code- und Konfigurationsdateien, weil diese typischerweise zeilenorientiert sind (eine Anweisung pro Zeile, eine Konfigurationsoption pro Zeile). Er ist schnell, vorhersehbar und entspricht der Funktionsweise von Git und jedem Code-Review-Werkzeug.
Für Prosa-Vergleiche, bei denen Änderungen auf Zeilenebene zu grob sind, bieten einige Werkzeuge Wort- oder Zeichen-Diff, der nur die geänderten Wörter innerhalb einer Zeile hervorhebt. Das ist präziser, aber schwieriger für Code zu lesen. Wenn Sie einen Wort-Diff benötigen, suchen Sie nach einem Werkzeug, das speziell als "word diff" oder "intra-line diff" gekennzeichnet ist.
Datenschutz und vertraulicher Inhalt
Der Diff-Prüfer läuft vollständig in Ihrem Browser. Beide Texte bleiben auf Ihrem Gerät; nichts wird hochgeladen. Das ist wichtig, weil der Text, den Sie am meisten vergleichen wollen, oft vertraulich ist: Verträge in Verhandlung, Pressemitteilungsentwürfe, interne Richtliniendokumente, Quellcode unter NDA. Cloud-Diff-Werkzeuge (DiffChecker.com, JsonDiff.com, Online-Merge-Tools) erfordern das Hochladen beider Texte auf einen Drittanbieter-Server, was genau das ist, was Sie für sensible Inhalte vermeiden wollen. Browserbasierter Diff hat keine dieser Belastungen.
Die Sitzung ist auch zustandslos: nichts bleibt nach dem Schließen des Tabs erhalten. Wenn Sie eine Aufzeichnung des Diffs benötigen, kopieren Sie die Ausgabe oder machen Sie einen Screenshot, bevor Sie wegnavigieren.
Häufige Fallstricke
- Leerraum-Lärm: nachgestellte Leerzeichen, gemischte Tabs und Leerzeichen sowie unterschiedliche Zeilenenden (LF unter Unix vs. CRLF unter Windows) erscheinen oft als "Änderungen", auch wenn der sichtbare Text identisch ist. Die meisten Diff-Werkzeuge haben für diesen Fall einen "Leerraum ignorieren"-Schalter.
- Zeilenende-Inkompatibilitäten: Windows-Zeilenenden (CRLF) vs. Unix-Zeilenenden (LF) lassen jede Zeile als geändert erscheinen. Wenn Sie Dateien von verschiedenen Betriebssystemen vergleichen, normalisieren Sie zuerst die Zeilenenden.
- Codierungsunterschiede: Text in UTF-8 vs. UTF-16 vs. Windows-1252 kann identisch aussehen, aber als völlig anders verglichen werden. Normalisieren Sie die Codierung vor dem Vergleichen auf UTF-8.
- Umgeordneter identischer Inhalt: wenn Sie einen Absatz von Seite 3 ausschneiden und auf Seite 1 einfügen, zeigt der Diff den Absatz als entfernt-von-Seite-3 und hinzugefügt-zu-Seite-1, auch wenn der Inhalt unverändert ist. Einige Werkzeuge bieten "Erkennung verschobener Blöcke", um damit umzugehen; einfacher Diff tut das nicht.
- Leistung bei großen Dateien: das Vergleichen von Dateien mit über 10.000 Zeilen kann den Browser verlangsamen. Für sehr große Diffs verwenden Sie den Kommandozeilen-
diffoder ein Desktop-Werkzeug wie Beyond Compare.
Tipps
- Fügen Sie sauberen Text ein: entfernen Sie Header, Footer oder Metadaten, die Sie nicht vergleichen möchten. Zusätzliches Rauschen macht echte Unterschiede schwerer zu erkennen.
- Verwenden Sie die Seite-an-Seite-Ansicht: beide Versionen nebeneinander mit ausgerichteten Zeilennummern zu sehen, macht Unterschiede einfacher zu verfolgen als eine Inline-Ansicht.
- Überprüfen Sie Leerraum: manchmal hat "identischer" Text unsichtbare Unterschiede wie nachgestellte Leerzeichen, unterschiedliche Zeilenenden (LF vs. CRLF) oder Tabs vs. Leerzeichen. Der Diff-Prüfer fängt diese ab.
- Normalisieren Sie zuerst für Prosa: für den Vergleich natürlicher Sprache lassen Sie beide Texte durch einen Leerraum-Normalisierer laufen oder fügen Sie sie vor dem Diff in einen einfachen Editor ein. Das vermeidet falsche Unterschiede durch aus Word oder PDF übertragene Formatierung.
- Speichern Sie den Diff, wenn Sie eine Aufzeichnung benötigen: kopieren Sie die hervorgehobene Ausgabe oder machen Sie einen Screenshot. Der Diff wird nicht automatisch persistiert.
- Funktioniert offline: sobald die Seite geladen ist, laufen Vergleiche lokal in Ihrem Browser ohne Internet.
Häufig gestellte Fragen
Vergleicht der Diff-Prüfer Zeichen für Zeichen?
Er vergleicht zeilenweise, derselbe Ansatz, den Git und die meisten professionellen Diff-Tools verwenden. Wenn sich auch nur ein Zeichen in einer Zeile ändert, wird die gesamte Zeile als geändert hervorgehoben.
Gibt es eine Größenbegrenzung?
Es gibt keine harte Grenze, doch sehr große Texte (über 10.000 Zeilen) können einen Moment zur Verarbeitung benötigen, da der Vergleich vollständig in Ihrem Browser läuft.
Kann ich Code-Dateien vergleichen?
Ja. Der Diff-Prüfer funktioniert mit jedem Text, einschließlich Quellcode. Syntaxhervorhebung erleichtert das Lesen von Code-Diffs.
Wird mein Text an einen Server gesendet?
Nein. Der Vergleich erfolgt in Ihrem Browser. Ihr Text verlässt Ihr Gerät nie.