Sinossi
git hash-object [-t <type>] [-w] [--stdin] [<file>...]
Descrizione
Il comando git hash-object calcola lo SHA-1 (o SHA-256, in repo moderni) che Git assegnerebbe ai contenuti di un file. Con -w, scrive anche l'oggetto nel database degli oggetti, restituendo lo SHA. Questo è il meccanismo più di basso livello dietro git add: quel comando porcelain essenzialmente chiama hash-object -w e poi aggiorna l'index.
Nell'uso quotidiano, git hash-object si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
Quasi mai ne hai bisogno direttamente. È più utile per script che sintetizzano contenuto nel database degli oggetti (importer, strumenti di migrazione), per debug controllando quale hash avrebbe un pezzo di contenuto, o per esplorazione educativa del modello content-addressable di Git.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-t <type> | Tipo di oggetto (default blob). |
-w | Scrive l'oggetto nel database. |
--stdin | Legge contenuto da standard input. |
--stdin-paths | Legge nomi file da stdin. |
--no-filters | Salta i filtri smudge/clean. |
--literally | Non valida il tipo di contenuto. |
Esempi
git hash-object README.md
# Stampa lo SHA che Git assegnerebbe
echo "hello" | git hash-object --stdin
# Hash di contenuto arbitrario
git hash-object -w newfile.txt
# Aggiunge il contenuto del file come blob nel DB degli oggetti
find . -name '*.png' | git hash-object --stdin-paths
# Calcolo batch di hash per molti file
Errori comuni
Usare -w crea un blob dangling se non lo riferisci da un tree. git gc alla fine pota gli oggetti irraggiungibili. Hashare attraverso filtri (normalizzazione CRLF) produce SHA diversi dai byte grezzi — passa --no-filters per confrontare con hash grezzi da altri strumenti.
Comandi correlati
git add, git cat-file, git update-index, git write-tree