lab 23 Al Interior de Git:
Directorio de trabajo con Objetos de Git

Metas

Ahora vamos a usar algunas herramientas para probar los objetos de git directamente.

Encontrando el último Commit 01

Ejecute:

git hist --max-count=1

Esto debería mostrar el último Commit hecho en el repositorio. El hash SHA1 en su sistema es seguramente diferente al mío, pero verá algo como esto:

Salida:

$ git hist --max-count=1
* 76ba0a7 2012-03-06 | Added a Rakefile. (HEAD, master) [Jim Weirich]

Extrayendo el último Commit 02

Usando el hash SHA1 del listado anterior …

Ejecute:

git cat-file -t <hash>
git cat-file -p <hash>

Podrá ver el siguiente resultado...

Salida:

$ git cat-file -t 76ba0a7
commit
$ git cat-file -p 76ba0a7
tree 096b74c56bfc6b40e754fc0725b8c70b2038b91e
parent b8f15c35ac4e42485773fec06e7155203a16c986
author Jim Weirich <jim (at) edgecase.com> 1331068328 -0500
committer Jim Weirich <jim (at) edgecase.com> 1331068328 -0500

Added a Rakefile.

NOTA: Si definió los alias ‘type’ y ‘dump’ en el laboratorio de alias, entonces podrá escribir git type y git dump en vez de el comando más largo cat-file (el cuál nunca puedo recordar).

Este es el vaciado de el objeto Commit que está en el encabezado de la rama "master". Se parece mucho al objeto Commit de la presentación anterior.

Buscando el Árbol 03

Podemos vaciar el árbol referenciado en el Commit. Debería ser una descripción de los archivos de más alto nivel en nuestro proyecto (para ese Commit). Use el valor del hash SHA1 de la propiedad “tree” listado arriba.

Ejecute:

git cat-file -p <treehash>

Aquí está cómo se ve mi árbol

Salida:

$ git cat-file -p 096b74c
100644 blob 28e0e9d6ea7e25f35ec64a43f569b550e8386f90	Rakefile
040000 tree e46f374f5b36c6f02fb3e9e922b79044f754d795	lib

Sí, veo el Rakefile y el directorio lib.

Volcando el directorio lib 04

Ejecute:

git cat-file -p <libhash>

Salida:

$ git cat-file -p e46f374
100644 blob c45f26b6fdc7db6ba779fc4c385d9d24fc12cf72	hello.rb

Aquí está el archivo hello.rb.

Volcando el archivo hello.rb 05

Ejecute:

git cat-file -p <rbhash>

Salida:

$ git cat-file -p c45f26b
# Default is World
# Author: Jim Weirich (jim@somewhere.com)
name = ARGV.first || "World"

puts "Hello, #{name}!"

Aquí lo tiene. Hemos volcado los objetos Commit, tree y blob directamente desde el repositorio git. Es todo lo que hay: blobs, árboles y commits.

Explore usted mismo 06

Explore por su cuenta el repositorio git manualmente. Vea si puede encontrar el archivo origina hello.rb desde el primer Commit siguiendo manualmente las referencias de los hash SHA1 iniciando desde el último Commit.

Tabla de Contenidos