lab 22 Al Interior de Git:
El directorio .git/h1>

Metas

El Directorio .git 01

Es tiempo de explorar un poco. Primero, iniciando desde la raíz del directorio de su proyecto …

Ejecute:

ls -C .git

Salida:

$ ls -C .git
COMMIT_EDITMSG	config		index		objects
HEAD		description	info		refs
ORIG_HEAD	hooks		logs

Éste es el directorio mágico donde son almacenadas todas las “cosas” de git. Echemos un vistazo en el directorio de objetos

El Almacenamiento de Objetos 02

Ejecute:

ls -C .git/objects

Salida:

$ ls -C .git/objects
09	24	30	43	69	78	9c	b8	e4	pack
11	27	3c	49	6b	97	af	c4	e7
1b	28	40	59	76	9a	b5	d2	info

Debería ver un monton de directorios con nombres de dos letras. Los nombres de los directorios son las dos primeras letras del hash sha1 del objeto almacenado en git.

A Profundidad en el Almacenamiento de Objetos 03

Ejecute:

ls -C .git/objects/<dir>

Salida:

$ ls -C .git/objects/09
6b74c56bfc6b40e754fc0725b8c70b2038b91e	9fb6f9d3a104feb32fcac22354c4d0e8a182c1

Mire en alguno de los directorios de dos letras. Verá algunos archivos con nombres de 38 caracteres. Estos son los archivos que contienen los objetos almacenados en git. Estos archivos están compresos y codificados, así que no será de mucha ayuda el mirar directamente en el contenido, pero daremos un vistazo más a detalle.

Archivo de Configuración 04

Ejecute:

cat .git/config

Salida:

$ cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
[user]
	name = Jim Weirich
	email = jim (at) edgecase.com

Este es el archivo de configuración específico del proyecto. Las entradas en la configuración serán sobrepuestas con las configuraciones que se encuentran en el archivo .gitconfig en su directorio raíz, al menos para este proyecto.

Ramas y Etiquetas 05

Ejecute:

ls .git/refs
ls .git/refs/heads
ls .git/refs/tags
cat .git/refs/tags/v1

Salida:

$ ls .git/refs
heads
tags
$ ls .git/refs/heads
master
$ ls .git/refs/tags
v1
v1-beta
$ cat .git/refs/tags/v1
40543214b69016a1f079a0d95ff88cc7421e9b54

Podría reconocer los archivos en el subdirectorio "tags". Cada archivo corresponde a una etiqueta que se creó anteriormente con el comando git tag. Su contenido es sólo el hash del Commit atado a la etiqueta.

Algo similar sucede con los directorios "heads", pero ellos son usado con las ramificaciones en vez de las etiquetas. En este momento sólo tenemos una rama, así que veremos "master" en este directorio.

El Archivo HEAD 06

Ejecute:

cat .git/HEAD

Salida:

$ cat .git/HEAD
ref: refs/heads/master

El archivo HEAD contiene una referencia a la ramificación actual. Esto debería ser una referencia a "master" en este punto.

Tabla de Contenidos