
Por favor, me oriente que o SHA que é criado quando o objeto de commit é criado é o SHA apenas do conteúdo do arquivo ou há outras entradas também para a função HASH, como autor do commit, carimbo de data e hora e data, etc.?
Eu tenho a seguinte confusão em minha mente
commit object's index=SHA(Contents of file)?
OR
commit object's index=SHA(Contents of file+author of commit+date of the day+time of the day)?
Responder1
Nunca existe um commit git
de conteúdo puro do arquivo, portanto, sua primeira suposição (SHA (conteúdo do arquivo)) nunca é verdadeira. Na verdade, cadaarquivovocê faz check-in, é armazenado como um objeto eesseo nome do objeto é a soma SHA do arquivo.
Mas você nem mesmo faz check-in de arquivos, trata-se de um arquivohierarquia. Uma hierarquia de arquivos é semelhante a umobjeto-árvore, que contém todos os arquivos nesta (sub)hierarquia (indicados pelo nome do objeto - soma SHA), nome e permissões dos arquivos. O nome do objeto de um arquivo em árvore é a soma SHA desta listagem. Isso também funciona recursivamente, ou seja, você pode fazer referência a objetos-árvore a partir de objetos-árvore (é assim que os subdiretórios funcionam).
Seu realcomprometer-seconsiste nas somas SHA de (0 ou mais) commits pais, o nome do objeto-árvore semelhante ao diretório raiz do seu repositório, data do commit, autor do commit, mensagem do commit, etc. O nome do commit (o "número de revisão") é a soma SHA acabouesselistagem.