MiServe DevTools

Ihre Sticker

Heften Sie hier Tools an. Sie werden in diesem Browser gespeichert.

Texte vergleichen (Diff)

Vergleichen Sie zwei Texte Zeile für Zeile, sehen Sie, was hinzugefügt, entfernt und innerhalb jeder Zeile geändert wurde, und kopieren Sie das Ergebnis als Unified Diff.

Läuft in Ihrem Browser. Nichts, was Sie einfügen, wird hochgeladen.

Über dieses Tool

So funktioniert der Vergleich

Der Vergleich sucht die kürzeste Liste von Zeilen, die aus dem ersten Text entfernt und ihm hinzugefügt werden müssen, um daraus den zweiten zu machen. Diese Liste zu finden ist dasselbe Problem wie die längste gemeinsame Teilfolge zu finden: die längste Folge von Zeilen, die in beiden Texten in derselben Reihenfolge vorkommen. Dieses Tool verwendet den Algorithmus, den Eugene Myers 1986 veröffentlicht hat und der hinter GNU diff steckt und in Git der Standard ist, und zwar in der Variante mit linearem Speicherbedarf, sodass der Speicherverbrauch proportional zur Größe der Texte bleibt.

Stehen eine entfernte und eine hinzugefügte Zeile an derselben Stelle eines geänderten Blocks, werden die beiden noch einmal Wort für Wort verglichen und die abweichenden Wörter hervorgehoben. Haben die beiden Zeilen wenig gemeinsam, erscheinen sie als einfache Entfernung und Hinzufügung, denn wenn fast alles hervorgehoben ist, sagt die Hervorhebung nichts mehr aus.

So lesen Sie das Ergebnis

Eine mit − markierte Zeile gibt es nur im Originaltext, eine mit + markierte nur im geänderten Text. Eine geänderte Zeile erscheint daher zweimal: einmal entfernt, einmal hinzugefügt. Die beiden Zahlenspalten sind die Zeilennummern im Original und im geänderten Text. Die Bedeutung tragen die Markierungen; die Farben wiederholen sie nur.

Die einspaltige Ansicht zeigt alles in einer Spalte, in der Reihenfolge, die auch eine Patch-Datei verwendet. Die Ansicht nebeneinander zeigt jeden Text in einer eigenen Spalte und richtet die einander entsprechenden Zeilen aneinander aus.

Das Unified-Diff-Format

Als Unified Diff kopieren erzeugt das Format von diff -u und git diff. Die Änderungen werden zu Hunks gruppiert, mit jeweils drei unveränderten Kontextzeilen davor und danach. Jeder Hunk beginnt mit einem Header wie @@ -1,7 +1,8 @@, der bedeutet: Sieben Zeilen ab Zeile 1 des Originals entsprechen acht Zeilen ab Zeile 1 des geänderten Textes.

Die Zeile \ No newline at end of file gehört zum Format. Sie erscheint, wenn ein Text nicht mit einem Zeilenumbruch endet, damit ein Patch die Datei exakt reproduzieren kann. Die Ansichten auf der Seite ignorieren diesen Unterschied, denn eine letzte Zeile, die identisch aussieht, soll nicht als geändert gemeldet werden.

Fragen

Wird der Text, den ich vergleiche, irgendwohin hochgeladen?

Nein. Der Vergleich erfolgt per JavaScript in Ihrem Browser-Tab. Das Tool stellt mit dem, was Sie einfügen, keine Netzwerkanfrage, und die Sicherheitsrichtlinie der Website blockiert Anfragen an alle anderen Hosts.

Warum ist eine Zeile als geändert markiert, obwohl sie gleich aussieht?

Der Unterschied ist meist unsichtbar: Leerzeichen am Zeilenende, ein Tab statt Leerzeichen, ein geschütztes Leerzeichen oder ein Buchstabe mit Akzent, der als zwei Zeichen statt als eines gespeichert ist. Schalten Sie die Option zum Ignorieren von Leerraumänderungen ein, um die ersten drei Fälle auszuschließen.

Kann ich den kopierten Diff mit patch anwenden?

Ja. Speichern Sie ihn in einer Datei und rufen Sie patch mit dem Namen der zu ändernden Datei auf, zum Beispiel: patch notes.txt changes.diff. Wenn beim Kopieren eine der Ignorieren-Optionen eingeschaltet war, fehlen die ignorierten Unterschiede darin, und die gepatchte Datei stimmt nicht genau mit dem geänderten Text überein.

Wie groß dürfen die Texte sein?

Texte mit einigen tausend Zeilen werden in Sekundenbruchteilen verglichen. Die Seite zeigt höchstens 5.000 Zeilen an, der kopierte Diff enthält aber immer jede Änderung. Bei zwei sehr langen Texten, die fast nichts gemeinsam haben, wird die Suche vorzeitig beendet, und das Ergebnis kann länger sein als nötig.

Weitere Tools in Text