Integridade de dados.
Discordo respeitosamente das respostas atuais. Hashes não são necessários para um DVCS, veja o caminho do Bazar . Você poderia fazer o mesmo com qualquer outro tipo de identificador globalmente exclusivo. Os hashes são uma medida para garantir a integridade dos dados: eles representam um resumo das informações contidas no objeto (confirmação, árvores, ...) referido pelo hash. Acredita-se que alterar o conteúdo sem alterar o hash (isto é, um ataque de pré - imagem ou ataque de colisão ) seja difícil, embora não impossível. (Se você realmente gosta, dê uma olhada no artigo de 2011 de Marc Stevens ).
Portanto, a referência aos objetos por seu hash SHA permite verificar se o conteúdo foi violado. E, desde que eles sejam (quase) garantidos exclusivos, eles também podem ser usados como identificadores de revisão - convenientemente.
Veja o Capítulo 9 do livro Git para mais detalhes.