Integrità dei dati.
Sono rispettosamente in disaccordo con le risposte attuali. Gli hash non sono necessari per un DVCS, vedi il modo Bazaar . Potresti fare altrettanto con qualsiasi altro tipo di identificatore univoco globale. Gli hash sono una misura per garantire l'integrità dei dati: rappresentano un riassunto delle informazioni contenute nell'oggetto (commit, alberi, ...) a cui fa riferimento l'hash. Modifica del contenuto senza alterare l'hash (ovvero un attacco preimage o attacco di collisione ) è ritenuto difficile, anche se non impossibile. (Se sei interessato a questo, dai un'occhiata al documento del 2011 di Marc Stevens ) .
Quindi, riferirsi agli oggetti con il loro hash SHA permette di controllare se il contenuto è stato manomesso. E, dato che sono (quasi) garantiti come unici, possono essere usati anche come identificatori di revisione, in modo conveniente.
Vedi Capitolo 9 del libro Git per maggiori dettagli.