git diff

Grundlegende Snapshots

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>...]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (4)

Vergleicht den Staging-Bereich mit dem letzten Commit: die Änderungen, die der nächste Commit speichert. --cached ist ein Synonym.

EmpfohlenGenau prüfen, was du gleich committest

Beispiel

git diff --staged

Zeigt eine Zusammenfassung: jede geänderte Datei mit der Zahl geänderter Zeilen, dann eine Summe.

EmpfohlenSchneller Überblick, wie groß eine Änderung ist

Beispiel

git diff --stat

Zeigt nur die Namen der geänderten Dateien.

Bei BedarfGeänderte Dateien auflisten, z. B. um sie an einen Linter zu übergeben

Beispiel

git diff --name-only

Zeigt die Namen geänderter Dateien mit einem Buchstaben: A hinzugefügt, M geändert, D gelöscht, R umbenannt.

Bei BedarfSehen, welche Dateien hinzugefügt, geändert oder gelöscht wurden

Beispiel

git diff --name-status

Die richtige Option wählen

Was git diff vergleicht

Wähle die beiden Seiten, die du vergleichen willst

BefehlLinke SeiteRechte Seite
git diffStaging-BereichArbeitsdateien
git diff --stagedLetzter CommitStaging-Bereich
git diff HEADLetzter CommitArbeitsdateien
git diff A BCommit ACommit B

Beispiele

Nicht vorgemerkte Änderungen

git diff

Was sich in deinen Dateien geändert hat, aber noch nicht vorgemerkt ist.


Vorgemerkte Änderungen

git diff --staged

Was der nächste Commit enthalten wird.


Zwei Commits

git diff HEAD~1 HEAD

Was der letzte Commit geändert hat.


Zwei Branches

git diff main feature/login

Alles, was sich zwischen zwei Branches unterscheidet.

Workflow-Beispiele

1
git diff

Lesen, was du geändert hast

2
git add app.js

Stagen

3
git diff --staged

Lesen, was committet wird

4
git commit -m "Add to cart"

Commit

1
git diff main...feature/login --stat

Dateien, die der Branch seit der Abzweigung von main geändert hat

2
git diff main...feature/login

Die 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

A:

git diff --staged (oder das Synonym git diff --cached).

A:

git diff HEAD vergleicht den letzten Commit mit deinen Arbeitsdateien.

A:

git show <commit>, oder git diff <commit>~1 <commit>.