Integridad de los datos.
Respetuosamente estoy en desacuerdo con las respuestas actuales. Los hashes no son necesarios para un DVCS, vea el camino del Bazar . Podría hacerlo también con cualquier otro tipo de identificador único global. Los hash son una medida para garantizar la integridad de los datos: representan un resumen de la información contenida en el objeto (commit, árboles, ...) al que hace referencia el hash. Se cree que alterar el contenido sin alterar el hash (es decir, un ataque de preimagen o un ataque de colisión ) es difícil, aunque no imposible. (Si realmente te gusta, mira el artículo de 2011 de Marc Stevens ).
Por lo tanto, hacer referencia a los objetos por su hash SHA permite verificar si el contenido ha sido manipulado. Y, dado que están (casi) garantizados como únicos, también se pueden usar como identificadores de revisión, convenientemente.
Vea el Capítulo 9 del libro de Git para más detalles.