Text-Diff
Läuft in deinem Browser; nichts wird hochgeladen
Zwei Versionen eines Textes Zeile für Zeile vergleichen, mit hervorgehobenen geänderten Wörtern.
Original
Modified
Differences
Nothing to compare yet
Was ist ein Text-Diff?
Ein Diff zeigt, wie sich zwei Versionen eines Textes unterscheiden: welche Zeilen entfernt wurden, welche hinzukamen und welche gleich geblieben sind. Dieselbe Idee steckt hinter git diff, Code-Review-Tools und der Vergleichsfunktion der meisten Editoren.
Dieses Tool ordnet Zeilen so zu wie diff und git, mit dem Myers-Algorithmus, der die kleinste Menge an hinzugefügten und entfernten Zeilen findet. Eine bearbeitete Zeile erscheint als entfernte Zeile neben der hinzugefügten, die sie ersetzt hat, und die geänderten Wörter darin werden hervorgehoben.
Bei der Arbeit mit APIs beantwortet ein Diff Fragen wie: Was hat sich seit gestern an einer Response geändert, warum liefert Staging etwas anderes als Produktion, oder welche Felder hat eine neue API-Version hinzugefügt oder gestrichen? Formatiere beide JSON-Responses vorher gleich, zum Beispiel mit dem JSON-Formatter, damit nur echte Änderungen auftauchen.
So benutzt du dieses Tool
- 1Füge die ältere Version in Original und die neuere in Modified ein oder öffne sie dort. Du kannst auf beide Editoren eine Datei ziehen. Unter Examples gibt es drei Paare zum Ausprobieren.
- 2Lies den Bereich Differences: Entfernte Zeilen sind rot mit
−, hinzugefügte grün mit+, und geänderte Wörter innerhalb einer Zeile sind hervorgehoben. Wechsle in der Kopfzeile des Bereichs zwischen Side by side und Unified. - 3Only changes klappt lange Abschnitte unveränderter Zeilen bis auf drei Zeilen um jede Änderung ein; klick auf eine eingeklappte Zeile, um sie zu öffnen. Mit F7 und Shift+F7 oder den Pfeilen springst du zwischen den Änderungen.
- 4Mit Ignore lässt du Unterschiede bei Leerraum, Groß- und Kleinschreibung oder Zeilenenden (CRLF gegen LF) außen vor. Die Statusleiste sagt, wenn sich die Texte nur in den Zeilenenden unterscheiden.
- 5Copy patch oder Download patch liefert die Änderungen als Unified Diff, den
git applyundpatchakzeptieren. Swap tauscht die beiden Seiten; Ctrl+Z macht das Seite für Seite rückgängig, und auch Clear.
Fehlerbehebung
- Jede Zeile wird als geändert angezeigt
- Wahrscheinlich nutzen die Texte unterschiedliche Zeilenenden (CRLF von Windows gegen LF) oder eine andere Einrückung. Die Statusleiste zeigt die Zeilenenden an; schalte Ignore line endings oder Ignore whitespace ein.
- Zwei JSON-Responses sehen völlig verschieden aus
- Eine ist vermutlich minifiziert oder anders eingerückt. Formatiere beide mit derselben Einrückung im JSON-Formatter und vergleiche dann. Dessen Tab Compare vergleicht JSON außerdem nach Schlüsseln und ignoriert dabei die Reihenfolge.
- Die letzte Zeile gilt als geändert, obwohl sie gleich aussieht
- Ein Text endet mit einem Zeilenumbruch, der andere nicht. Diff-Tools werten das als Änderung (im Patch steht
\ No newline at end of file). Ignore line endings blendet es aus. - Eingefügter Text zeigt nie CRLF-Zeilenenden
- Browser machen aus jedem getippten oder eingefügten Zeilenumbruch in einem Textfeld ein LF, CRLF übersteht das Einfügen also nicht. Öffne die Dateien stattdessen mit Open oder per Drag-and-drop: Dann vergleicht das Tool die Zeilenenden so, wie sie auf der Festplatte stehen.
- Zu groß zum Vergleichen
- Jede Seite fasst bis zu 50.000 Zeilen oder 5 Millionen Zeichen. Für größere Dateien nimm
git diff --no-index a.txt b.txtoderdiff -uauf der Kommandozeile.
Häufige Fragen
Warum erscheint eine geänderte Zeile als eine Entfernung und eine Hinzufügung?
Diffs vergleichen ganze Zeilen. Ändert sich irgendetwas in einer Zeile, passt die alte Zeile nicht mehr, also wird sie als entfernt und die neue als hinzugefügt aufgeführt, direkt nebeneinander. Die hervorgehobenen Wörter zeigen, was sich in der Zeile geändert hat.
Berücksichtigt der Patch die Ignore-Optionen?
Nein. Der Patch beschreibt immer die exakten Unterschiede, inklusive Leerraum, Groß- und Kleinschreibung und Zeilenenden, damit git apply und patch ihn anwenden können. Die Ignore-Optionen ändern nur, was der Bereich Differences anzeigt.
Was bedeutet "shown as replaced"?
Haben zwei große Texte fast nichts gemeinsam, kann die Suche nach dem kleinsten Diff sehr lange dauern. Nach einer festen Menge an Arbeit zeigt das Tool den restlichen Bereich komplett als entfernt und hinzugefügt. Das Ergebnis ist trotzdem ein korrekter Diff, nur gröber.
Wird mein Text irgendwo hochgeladen?
Nein. Der Vergleich läuft in deinem Browser. Damit nach einem Neuladen nichts verloren geht, bleibt das Eingefügte im Session Storage dieses Tabs, bis du es löschst oder den Tab schließt. Copy link legt die Eingabe hinter das # im Link; diesen Teil schicken Browser nie an einen Server, aber jeder, dem du den Link gibst, kann sie lesen. Deine Einstellungen wie Layout und Ignore-Optionen werden in diesem Browser gespeichert.