Pelo que entendi, quando o Git atribui um hash SHA1 a um arquivo, esse SHA1 é exclusivo do arquivo com base em seu conteúdo.
Como resultado, se um arquivo for movido de um repositório para outro, o SHA1 do arquivo permanecerá o mesmo, pois seu conteúdo não foi alterado.
Como o Git calcula o resumo SHA1? Faz isso no conteúdo completo do arquivo descompactado?
Eu gostaria de emular a atribuição de SHA1 fora do Git.