git diff
Zeigt Änderungen zwischen deinen Dateien, dem Staging-Bereich und Commits
Der Befehl 'git diff' zeigt genau die Zeilen, die sich geändert haben. Ohne Argumente vergleicht er deine Arbeitsdateien mit dem Staging-Bereich — die Änderungen, die noch nicht vorgemerkt sind. Mit --staged vergleicht er den Staging-Bereich mit dem letzten Commit — also das, was dein nächster Commit enthält. Gib ihm Commits oder Branches, um zwei beliebige Versionen des Projekts zu vergleichen.
Syntax
git diff [<options>] [<commit>] [--] [<path>...]
git diff [<options>] --staged [<commit>] [--] [<path>...]
git diff [<options>] <commit> <commit> [--] [<path>...]Optionen
Die richtige Option wählen
Was git diff vergleicht
Wähle die beiden Seiten, die du vergleichen willst
| Befehl | Linke Seite | Rechte Seite |
|---|---|---|
git diff | Staging-Bereich | Arbeitsdateien |
git diff --staged | Letzter Commit | Staging-Bereich |
git diff HEAD | Letzter Commit | Arbeitsdateien |
git diff A B | Commit A | Commit B |
Beispiele
Nicht vorgemerkte Änderungen
git diffWas sich in deinen Dateien geändert hat, aber noch nicht vorgemerkt ist.
Vorgemerkte Änderungen
git diff --stagedWas der nächste Commit enthalten wird.
Zwei Commits
git diff HEAD~1 HEADWas der letzte Commit geändert hat.
Zwei Branches
git diff main feature/loginAlles, was sich zwischen zwei Branches unterscheidet.
Workflow-Beispiele
git diffLesen, was du geändert hast
git add app.jsStagen
git diff --stagedLesen, was committet wird
git commit -m "Add to cart"Commit
git diff main...feature/login --statDateien, die der Branch seit der Abzweigung von main geändert hat
git diff main...feature/loginDie vollständigen Änderungen
Fehlerbehebung
git diff zeigt nichts, obwohl Dateien geändert wurden
Ursache: Die Änderungen sind schon vorgemerkt
Nutze git diff --staged (oder git diff HEAD für beides)
Eine neue Datei fehlt im Diff
Ursache: Unverfolgte Dateien werden nicht verglichen
Merke sie mit git add vor und nutze dann git diff --staged
Die ganze Datei erscheint als geändert
Ursache: Zeilenenden oder Leerzeichen haben sich geändert
Versuche git diff -w, um Leerzeichen zu ignorieren, und prüfe core.autocrlf
Tipps & Stolperfallen
Best Practices
- ✓Prüfe git diff --staged vor jedem Commit.
- ✓Bei großen Änderungen zuerst --stat, dann die Details lesen.
- ✓Vergleiche Branches mit drei Punkten (main...branch), um nur zu sehen, was der Branch hinzugefügt hat.
Häufige Fehler
- ✗Erwarten, dass git diff vorgemerkte Änderungen zeigt — tut es nicht; nutze git diff --staged.
- ✗Unverfolgte Dateien in git diff erwarten: neue Dateien erscheinen erst, wenn sie hinzugefügt sind.
- ✗Die Reihenfolge zweier Commits verwechseln: git diff A B zeigt den Weg von A nach B.
FAQ
git diff --staged (oder das Synonym git diff --cached).
git diff HEAD vergleicht den letzten Commit mit deinen Arbeitsdateien.
git show <commit>, oder git diff <commit>~1 <commit>.