Sinossi
git diff-index [--cached] [-p] <tree-ish> [<path>...]
Descrizione
Il comando git diff-index è il compagno plumbing di git diff. Confronta un oggetto tree (commit, tag) con l'index o la working tree. L'output è il formato diff grezzo leggibile da macchina a meno che -p richieda una patch.
Nell'uso quotidiano, git diff-index si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
La maggior parte degli utenti preferisce git diff, che è più facile da leggere. Usa diff-index negli script dove hai bisogno di un confronto stabile e non ambiguo e non vuoi le comodità del porcelain. Gli hook (specialmente pre-commit) lo usano spesso per controlli precisi.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--cached | Confronta tree con index (invece di working tree). |
-p | Mostra la patch. |
--name-only | Elenca solo i nomi dei file modificati. |
--name-status | Elenca i nomi con lettere di stato. |
--quiet | Esce non-zero se esistono differenze; non produce output. |
-z | Output terminato da NUL. |
Esempi
git diff-index --cached HEAD
# Equivalente plumbing di "git diff --staged"
git diff-index HEAD
# Working tree vs HEAD
git diff-index --quiet HEAD || echo "Repo è sporco"
# Test utile in script e hook
git diff-index --name-only --diff-filter=A HEAD
# Elenca file appena aggiunti
Errori comuni
L'output raw predefinito non è testo della patch — passa -p per quello. --quiet imposta il codice di uscita piuttosto che stampare, che è l'opposto di ciò che gli utenti a volte si aspettano da un comando "diff".
Comandi correlati
git diff, git diff-tree, git status, git ls-files