Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--cachedConfronta tree con index (invece di working tree).
-pMostra la patch.
--name-onlyElenca solo i nomi dei file modificati.
--name-statusElenca i nomi con lettere di stato.
--quietEsce non-zero se esistono differenze; non produce output.
-zOutput 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