Diff Checker

ENTWICKLER-TOOL

Diff Checker

Vergleiche zwei Texte und finde Unterschiede Zeile für Zeile. Mit Side-by-Side-Ansicht, Unified-View und Highlighting von Hinzugefügten und Entfernten.

Side-by-Side Unified Highlighting Statistik

Hinweis: Alle Vergleiche erfolgen lokal in deinem Browser. Es werden keine Daten an Server gesendet. Perfekt für vertrauliche Texte, Code-Snippets oder Konfigurationsdateien.

Inhaltsverzeichnis

Schnellübersicht

  • Text-Vergleich: Zwei Texte Zeile für Zeile vergleichen
  • Side-by-Side: Nebeneinander-Ansicht mit Zeilennummern
  • Unified-View: Klassische Diff-Darstellung
  • Highlighting: Hinzugefügt, Entfernt, Geändert
  • Statistik: Anzahl der Änderungen auf einen Blick
  • Presets: Beispiele für Code, JSON, Text
  • Theorie: Über Diff-Algorithmen (LCS)
  • Geschichte: Von Unix diff zu GitHub

1. Diff Checker

Füge zwei Texte ein und klicke auf "Vergleichen" – die Unterschiede werden hervorgehoben.

Diff-Ergebnis

Wussten Sie schon? Der erste diff-Algorithmus wurde 1974 von Douglas McIlroy bei Bell Labs entwickelt. Er basiert auf dem Longest Common Subsequence (LCS)-Problem und ist bis heute die Grundlage für Git, GitHub, GitLab und alle modernen Versionsverwaltungssysteme. Der Befehl diff ist Teil der POSIX-Standards und auf jedem Unix/Linux-System vorhanden.

2. Theorie – Diff-Algorithmen

Verstehe die Grundlagen von Text-Vergleichen.

Was ist ein Diff?

Ein Diff zeigt die Unterschiede zwischen zwei Versionen:

  • Zeilenbasiert: Vergleich Zeile für Zeile
  • Hinzugefügt (+): Neue Zeilen
  • Entfernt (−): Gelöschte Zeilen
  • Unverändert: Gleiche Zeilen
+ neue Zeile · − alte Zeile

LCS-Algorithmus

Longest Common Subsequence ist die Basis:

  • Ziel: Längste gemeinsame Teilfolge finden
  • Dynamisch: O(n×m) Speicher
  • Optimiert: Myers-Diff O(nd)
  • Ergebnis: Minimale Änderungen
Zeilen: A, B, C, D vs. A, C, D → B entfernt

Diff-Formate

Verschiedene Darstellungen:

  • Unified: GitHub-Standard, kompakt
  • Context: Mit Kontext-Zeilen
  • Side-by-Side: Nebeneinander
  • Word-Diff: Innerhalb Zeilen
@@ -1,3 +1,3 @@ (Hunk-Header)

Best Practices

  • Kleine Commits: Leichter zu reviewen
  • Aussagekräftige Messages: Was und warum
  • Kontext beachten: Nicht nur Zeilen
  • Ignorieren: Whitespace, Case optional
  • Tool nutzen: VSCode, Git, Meld
  • Code Review: Vor Merge prüfen
git diff HEAD~1 HEAD

3. Geschichte des Diff

Von Unix zu Git und modernen Code-Reviews.

1974

Erster diff-Befehl

Douglas McIlroy entwickelt das diff-Programm bei Bell Labs. Es vergleicht zwei Dateien und zeigt Unterschiede. Erster Meilenstein der Textverarbeitung.

1976

LCS-Algorithmus

Hunt & Szymanski veröffentlichen den LCS-Algorithmus. Er wird zur Grundlage moderner Diff-Werkzeuge. Effiziente Berechnung von Unterschieden.

1986

Myers-Diff

Eugene Myers veröffentlicht optimierten Algorithmus mit O(ND)-Komplexität. Wird Standard für alle modernen Diff-Implementationen.

1991

diff als POSIX

diff wird Teil der POSIX-Standards. Auf jedem Unix-System verfügbar. Werkzeuge wie patch und diffstat entstehen.

2005

Git revolutioniert

Linus Torvalds entwickelt Git. Diff wird zum Kernstück jeder Versionsverwaltung. Distributed Version Control wird Standard.

2008

GitHub & Pull Requests

GitHub startet und macht Diff-Ansichten populär. Pull Requests mit Side-by-Side-Diff werden Standard im Code Review.

2010er

Moderne Diff-Tools

Beyond Compare, Meld, KDiff3, WinMerge werden populär. VSCode integriert Diff-Ansicht. Merge-Konflikte leicht lösen.

Heute

KI-gestützte Diffs

GitHub Copilot und KI-Tools erklären Diffs automatisch. Semantic Diff versteht Code-Struktur statt nur Zeilen. Review wird effizienter.

4. FAQ – Häufige Fragen

Häufige Fragen zu Diff

Wie funktioniert ein Diff-Algorithmus?

Ein Diff-Algorithmus findet die minimale Anzahl an Änderungen zwischen zwei Texten:

  • 1. Zerlegung: Beide Texte in Zeilen aufteilen
  • 2. LCS finden: Längste gemeinsame Teilfolge berechnen
  • 3. Vergleich: Was ist in A, aber nicht in B?
  • 4. Ausgabe: Zeilen mit +/− markieren

Beispiel:

  • A: hallo, welt, !
  • B: hallo, Welt, !
  • Diff: Zeile 2 geändert

Moderner Standard: Myers-Diff mit O(ND)-Komplexität.

Was ist der Unterschied zwischen Unified und Side-by-Side?
FormatDarstellungVerwendung
UnifiedUntereinanderGit, GitHub, CLI
Side-by-SideNebeneinanderIDE, GUI-Tools
ContextMit KontextÄlter, seltener

Unified-Beispiel:

@@ -1,3 +1,3 @@
 hallo
-welt
+Welt
 !

Vorteil Unified: Kompakt, ideal für E-Mails und Patches.

Vorteil Side-by-Side: Übersichtlich bei großen Änderungen.

Kann ich Whitespace-Unterschiede ignorieren?

Ja, die meisten Diff-Tools bieten Optionen:

  • -w / --ignore-all-space: Alle Whitespaces ignorieren
  • -b / --ignore-space-change: Änderungen in Whitespace ignorieren
  • -i / --ignore-case: Groß-/Kleinschreibung ignorieren
  • -B / --ignore-blank-lines: Leere Zeilen ignorieren

Git-Beispiele:

  • git diff -w – Whitespace ignorieren
  • git diff --ignore-all-space
  • git diff --ignore-blank-lines

Wichtig: In Code ist Whitespace oft signifikant (Python!).

Was ist ein Merge-Konflikt?

Ein Merge-Konflikt entsteht, wenn zwei Branches dieselbe Zeile ändern:

Beispiel in Git:

<<<<<<< HEAD
console.log("Hallo");
=======
console.log("Hello");
>>>>>>> branch-feature

Lösung:

  • Manuell: Eine Version wählen
  • Merge-Tool: GUI zum Auflösen
  • Strategie: ours/theirs
  • Rebase: Bei Feature-Branches

Best Practice: Häufig pullen, kleine Commits.

Was ist ein Hunk in einem Diff?

Ein Hunk (oder Chunk) ist ein zusammenhängender Block von Änderungen:

  • Kopfzeile: @@ -1,3 +1,3 @@
  • Format: @@ -alteStart,alteAnz +neueStart,neueAnz @@
  • Kontext: 3 Zeilen vor/nach (Standard)
  • Inhalt: Zeilen mit Präfix (+, −, Leerzeichen)

Beispiel:

@@ -5,7 +5,8 @@
 context line 1
 context line 2
-removed line
+added line
+another added
 context line 3

Verwendung: In git add -p kannst du Hunk für Hunk stagen.

Wie vergleiche ich Dateien auf der Kommandozeile?

Standard-Tools:

BefehlBeschreibung
diff a.txt b.txtZeilenvergleich
diff -u a.txt b.txtUnified-Format
diff -y a.txt b.txtSide-by-Side
diff -w a.txt b.txtWhitespace ignorieren
git diffUncommitted changes
git diff HEAD~1Letzter Commit vs. jetzt
git diff branch1..branch2Zwischen Branches

Farbe aktivieren:

  • git config --global color.diff auto
  • diff --color=auto a.txt b.txt
Welche Diff-Tools gibt es für GUI?
ToolPlattformBesonderheit
Beyond CompareWin/Mac/LinuxKommerziell, mächtig
MeldLinux/WindowsOpen Source, Git-Integration
KDiff3Win/Mac/Linux3-Wege-Merge
WinMergeWindowsGratis, einfach
VSCodeAlleEingebaut, Git-Integration
P4MergeWin/Mac/LinuxPerforce, gratis

Für Git konfigurieren:

  • git config --global diff.tool meld
  • git difftool statt git diff
Was ist ein Three-Way-Merge?

Ein Three-Way-Merge nutzt drei Versionen zum Zusammenführen:

  • Base: Gemeinsamer Vorfahre
  • Ours: Aktueller Branch
  • Theirs: Zu mergender Branch

Vorteil:

  • Intelligent: Nutzt Base zum Vergleich
  • Weniger Konflikte: Bei unabhängigen Änderungen
  • Automatisch: Bei klar getrennten Änderungen

Git-Beispiel:

git checkout main
git merge feature
# Automatisch oder Konflikt

Zusammenfassung

Die wichtigsten Punkte

  • Diff: Zeilenbasierter Vergleich zweier Texte
  • LCS: Longest Common Subsequence als Basis
  • Myers-Diff: O(ND)-Algorithmus, Standard
  • Formate: Unified, Side-by-Side, Context
  • Symbole: + hinzugefügt, − entfernt, Leerzeichen unverändert
  • Hunk: Zusammenhängender Änderungsblock
  • Whitespace: Optional ignorieren (-w)
  • Merge-Konflikt: Bei gleicher Zeile in 2 Branches
  • Git: git diff für alle Änderungen
  • Unser Tool: Diff Checker mit Side-by-Side und Unified View

Weitere Entwickler-Tools

API Response Simulator

Simuliere HTTP-API-Antworten mit Status-Codes und JSON.

Zum Tool
JSON Formatter

JSON formatieren, validieren und verschönern.

Zum Tool
Regex Tester

Reguläre Ausdrücke testen und debuggen.

Zum Tool
SQL Formatter

SQL-Queries formatieren und verschönern.

Zum Tool