Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
-t <type>Tipo di oggetto (default blob).
-wScrive l'oggetto nel database.
--stdinLegge contenuto da standard input.
--stdin-pathsLegge nomi file da stdin.
--no-filtersSalta i filtri smudge/clean.
--literallyNon 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