Git - Object Store
O object
store, descrito no último post, é a parte principal da implementação do
repositório do Git. Ele contém os arquivos de dados original e todas as
mensagens de log, informações do autor, datas e outras informações requeridas
para gerar qualquer versão ou branch do projeto.
Dentro do objecto store há apenas quatro tipos de objetos, a
saber:
- Blobs (binary large object) que representa cada versão
de um arquivo. Esse tipo de objeto pode conter qualquer dado. Um blob
contém dados de um arquivo, mas não contém quaisquer metadados sobre ele
nem mesmo o seu nome.
- Tree que representa o primeiro nível de um diretório.
Ele registra identificadores para blob,
nome de caminhos, e um pouco dos metadados de todos os arquivos e
diretórios. Além disso, ele pode fazer referência a outros objetos tree, de forma recursiva,
criando assim, um hierarquia completa de arquivos e subdiretórios.
- Um objeto commit mantém metadados para cada
mudança introduzidas no repositório, incluindo o autor, quem fez a
submissão, data de quando foi feita a submissão e mensagens de log. Cada commit aponta para um objeto da árvore
que captura um snapshot completo, o estado do repositório
no momento em que a submissão foi realizada.
- Um objeto tag atribui um nome arbitrário, porém
legível, a um objeto
específico, geralmente um commit. Embora 9dfdsf3dfgfd435fds3333deaaaf5169 se refira
a uma exata e bem definida committer, um nome de tag mais
familiar como Ver-1.0-Alpha poder fazer mais sentido.
Um commit realizado no Git é referenciado pela seu hash sha1 aquele numero feioso.
ResponderExcluirNormalmente não precisamos saber ele todo, podemos fazer navegação pelos nove primeiros digitos.
exemplo git diff HEAD..9dfdsf3df
Uma TAG é utilizada para marcar algum commit específico podendo referencia-lo agora através do nome TAG atribuido a ele. O proprio Git tem uma TAG chamada HEAD que está sempre referenciado ao ultimo commit do branch master.
podemos utiliza-lo a qualquer hora para voltar a versão mais recente de nosso projeto
git checkout HEAD
Conforme o modelo de funcionamento do GIT, inverso ao dos servidores centralizados(isso merece um post), a linha principal do git(master) é a versão de produção e não a versão de desenvolvimento. Então a cada release normalmente temos TAG da versão anexadas ao commit V1.01, V1.02
Abraço, parabens pelo post.