Saltar al contenido principal
MDev Env Pro
Guía: Guía Git Pro + Lazygit50% Completado

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.

Objetos inmutables • SHA IndexingRefs & HEAD • Punteros ligerosWorktrees • Multi-rama sin clonar
Modelo de ObjetosBase de Datos Inmutable (Content-Addressable)

Estructura Interna de Git: Blobs, Trees, Commits, Refs & Worktrees

1. Working DirectoryArchivos en Disco

Tu código editable en tiempo real.

src/index.ts (modificado)
2. Staging Area (Index).git/index

Snapshot temporal previo al commit (git add).

prepara los hashes SHA de los objetos
GIT OBJECT STORE (`.git/objects/` direccionado por contenido SHA)Inmutable
📄 BLOBContenido puro

Guarda los bytes del archivo comprimidos en zlib, sin metadatos ni nombre.

hash: e69de29bb2d1...
🌳 TREEDirectorios

Mapea nombres de archivos, permisos (100644) y punteros a Blobs o Sub-Trees.

tree 100644 blob e69d... index.ts
📦 COMMITSnapshot

Apunta al Root Tree, parent commit, autor, firma PGP y mensaje.

tree d4e8... parent 9f2c...
🏷️ Refs & HEAD (`.git/refs/`)Punteros Ligeros

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 886ee52a
🌲 Git Worktrees (`git worktree add`)Multi-Branch

Permite tener múltiples ramas activas en carpetas separadas simultáneamente compartiendo la misma base de datos `.git`.

git worktree add ../hotfix-login hotfix/v2

Los 4 Objetos Fundamentales en .git/objects

  1. 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.
  2. Tree: Representa un directorio. Asocia nombres de archivo y permisos (100644, 100755) con los hashes de los Blobs correspondientes o de otros Sub-Trees.
  3. Commit: Representa un snapshot en el tiempo. Apunta a un Tree raíz, a sus commits padres (parents), al autor, fecha y mensaje.
  4. 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:

terminalbash
# 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:

terminalbash
# 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

Ejercicio Práctico Ninja 🥷

  1. En cualquier repo, corre git cat-file -p HEAD y observa cómo el commit apunta a un tree y a un parent.
  2. Corre git cat-file -p <hash-del-tree> para ver la lista de blobs y carpetas de ese snapshot.
  3. Crea un worktree con git worktree add ../temp-branch y 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.

Inicio
1/2
Siguiente