Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git cat-file (-t | -s | -p | -e) <object>
git cat-file --batch
git cat-file --batch-check

Descrizione

Il comando git cat-file è uno strumento plumbing che legge oggetti Git grezzi dal database degli oggetti. Può stampare il tipo di un oggetto (blob, tree, commit, tag), dimensione e contenuto. La modalità --batch permette agli script di passare molti nomi di oggetti su stdin e ricevere output strutturato, che è molto più veloce che invocare cat-file per oggetto.

Nell'uso quotidiano, git cat-file si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Quando usarlo

La maggior parte degli sviluppatori non ha mai bisogno di git cat-file direttamente — comandi porcelain come git show, git log e git diff lo avvolgono trasparentemente. Ricorri ad esso quando scrivi script che percorrono oggetti Git, debugghi corruzione del repository o impari come Git memorizza i dati internamente.

Opzioni comuni

OpzioneDescrizione
-tStampa il tipo di oggetto.
-sStampa la dimensione dell'oggetto in byte.
-pPretty-print dei contenuti in modo type-aware.
-eEsce zero se l'oggetto esiste.
--batchStream <sha> <type> <size> CRLF <content> per ogni input.
--batch-checkCome batch, ma solo righe header.
--filtersApplica filtri smudge quando stampa blob.

Esempi

git cat-file -t HEAD
# commit

git cat-file -p HEAD
# Mostra il messaggio di commit e gli SHA tree/parent

git cat-file -p HEAD:src/main.c
# Stampa il file come era a HEAD

echo HEAD | git cat-file --batch-check
# Ottiene type/size/SHA in formato leggibile da macchina

Errori comuni

Passare uno SHA parziale che è ambiguo restituisce un errore — disambigualo con più caratteri. Dimenticare -p e usare -t non stampa i contenuti. La modalità --batch richiede gestione attenta del protocollo; rispetta l'header di dimensione per leggere il giusto numero di byte.

Comandi correlati

git show, git hash-object, git ls-tree, git rev-parse