Dentro do Git: Trabalhando diretamente com objetos do Git (bonus)
Metas
- Explorar a estrutura dos objetos do banco de dados.
- Usar hashes SHA1 para pesquisar por conteúdo no repositório.
Vamos examinar os objetos do Git com algumas ferramentas.
01 Procurando pelo último commit
Execute
git log --max-count=1
Esse comando deve encontrar o último commit nesse repositório. A hash SHA1 provavelmente é diferente em nossos sistemas, mas você deve ver algo como isto.
Resultado
$ git log --max-count=1
* 8029c07 2011-03-09 | Added index.html. (HEAD, main) [Alexander Shvets]
02 Exibição do último commit
Com a hash SHA1, tal como acima...
Execute
git cat-file -t <hash>
git cat-file -p <hash>
Eu vejo isso ...
Resultado
$ git cat-file -t 8029c07
commit
$ git cat-file -p 8029c07
tree 096b74c56bfc6b40e754fc0725b8c70b2038b91e
parent 567948ac55daa723807c0c16e34c76797efbcbed
author Alexander Shvets <alex@githowto.com> 1299684476 -0500
committer Alexander Shvets <alex@githowto.com> 1299684476 -0500
Added index.html.
Isso exibe o objeto de commit, que está no início do branch main
.
03 Busca em árvore
Nós podemos exibir a árvore referenciada no commit. Isso deveria ser uma descrição do arquivo no nosso projeto (para um commit específico). Use a hash SHA1 da string da árvore listada acima.
Execute
git cat-file -p <treehash>
Aqui está a minha árvore ...
Resultado
$ git cat-file -p 096b74c
100644 blob 28e0e9d6ea7e25f35ec64a43f569b550e8386f90 index.html
040000 tree e46f374f5b36c6f02fb3e9e922b79044f754d795 lib
Eu posso ver o arquivo e a pasta da lib do index.html
.
04 Exibir diretório da lib
Execute
git cat-file -p <libhash>
Resultado
$ git cat-file -p e46f374
100644 blob c45f26b6fdc7db6ba779fc4c385d9d24fc12cf72 hello.html
Tem um arquivo hello.html
.
05 Exibir o arquivo hello.html
Execute
git cat-file -p <hellohash>
Resultado
$ git cat-file -p c45f26b
<!-- Author: Alexander Shvets (alex@githowto.com) -->
<html>
<head>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
E aí está. Objetos árvores, objetos de commits e objetos blob são exibidos diretamente do repositório do Git. E isso é tudo que tem - árvores, blobs e commits.
06 Explore você mesmo
O repositório Git pode ser explorado manualmente. Tente achar manualmente o arquivo hello.html
original do primeiro commit com ajuda da hash SHA1 referenciada no último commit.