En este módulo aprenderás:
- Comprende blobs, trees, commits, tags, HEAD y git worktree sin memorizar comandos a ciegas.
- Comandos y configuraciones clave para 01. Modelo Mental de Git (Objetos, Refs & Worktrees)
- Ejercicios prácticos listos para probar en tu terminal local
Domina Git entendiendo su base de datos inmutable
Mano, la mayoría de desarrolladores sufren con Git porque intentan memorizar comandos (git merge, git rebase, git reset) como si fueran hechizos mágicos. En realidad, Git es una base de datos clave-valor extremadamente simple y elegante, donde la clave es el hash criptográfico SHA y el valor es el contenido inmutable del objeto.
Estructura Interna de Git: Blobs, Trees, Commits, Refs & Worktrees
Tu código editable en tiempo real.
src/index.ts (modificado)Snapshot temporal previo al commit (git add).
Guarda los bytes del archivo comprimidos en zlib, sin metadatos ni nombre.
Mapea nombres de archivos, permisos (100644) y punteros a Blobs o Sub-Trees.
Apunta al Root Tree, parent commit, autor, firma PGP y mensaje.
Las ramas (refs/heads/main) son simples archivos de texto que guardan el hash de 40 caracteres del último commit.
HEAD → ref: refs/heads/main → commit 886ee52aPermite tener múltiples ramas activas en carpetas separadas simultáneamente compartiendo la misma base de datos `.git`.
git worktree add ../hotfix-login hotfix/v2Los 4 Objetos Fundamentales en .git/objects
- Blob: Contiene los bytes en bruto del archivo. No tiene nombre ni permisos; si dos archivos en carpetas distintas tienen el mismo contenido exacto, Git solo guarda un único blob.
- Tree: Representa un directorio. Asocia nombres de archivo y permisos (
100644,100755) con los hashes de los Blobs correspondientes o de otros Sub-Trees. - Commit: Representa un snapshot en el tiempo. Apunta a un Tree raíz, a sus commits padres (parents), al autor, fecha y mensaje.
- Tag: Un puntero fijo e inmutable a un commit específico con firma PGP opcional.
Inspección Ninja con git cat-file
Puedes ver exactamente qué hay dentro de la base de datos de Git con el comando de plomería cat-file:
# Ver el tipo de un objeto por su hash
git cat-file -t 886ee52a
# Ver el contenido exacto de un commit o tree
git cat-file -p HEAD
Git Worktrees: Trabaja en múltiples ramas sin hacer stash
¿Alguna vez estabas a mitad de una feature compleja y te pidieron un hotfix urgente en producción? Con git worktree no necesitas hacer stash ni clonar el repositorio de nuevo:
# Crear una carpeta hermana vinculada a la rama hotfix
git worktree add ../mi-app-hotfix hotfix/v1.2
# Al terminar, borras el worktree limpiamente
git worktree remove ../mi-app-hotfix
El índice (.git/index) es tu red de seguridad
Antes de hacer commit, git add no modifica tu historial, solo prepara la estructura de trees y blobs en el staging area. Puedes revertir cualquier cambio antes del commit con git restore --staged <archivo>.
Ejercicio Práctico Ninja 🥷
- En cualquier repo, corre
git cat-file -p HEADy observa cómo el commit apunta a untreey a unparent. - Corre
git cat-file -p <hash-del-tree>para ver la lista de blobs y carpetas de ese snapshot. - Crea un worktree con
git worktree add ../temp-branchy verifica que ambas carpetas comparten la misma base de datos.git.
¿Terminaste esta lección?
Marca tu progreso para sincronizar el avance en tu navegador.