Conceptos Basicos de Git
Git es un sistema de control de versiones distribuido. Cada desarrollador tiene una copia completa del repositorio y puede trabajar sin conexion.
Caracteristicas de Git: Gestiona archivos mediante snapshots, registrando el estado completo en lugar de diferencias.
Tipos de Objetos Git
Git gestiona datos con 4 tipos de objetos:
1. Blob (Binary Large Object)
Objeto que almacena el contenido de un archivo. No incluye el nombre del archivo, solo contiene datos puros.
# Verificar objeto blob
git cat-file -p <blob-hash>
2. Tree
Objeto que representa la estructura de directorios. Contiene referencias a blobs u otros trees y nombres de archivos.
3. Commit
Objeto que registra un snapshot:
- Referencia al tree de nivel superior
- Referencia al commit padre
- Informacion del autor y committer
- Mensaje del commit
4. Tag
Objeto que asigna un nombre a un commit especifico. Se usa para gestionar versiones de lanzamiento.
Hash SHA-1
Todos los objetos se identifican mediante hash SHA-1. El mismo contenido produce el mismo hash, lo que permite eliminar eficientemente datos duplicados.
# Verificar hash de objeto
git hash-object README.md
# Verificar hash de commit
git log --oneline
Como Funcionan las Ramas
Una rama es simplemente un “puntero a un commit”. Crear una nueva rama solo anade un puntero, no copia datos.
# Contenido real de la rama (.git/refs/heads/main)
cat .git/refs/heads/main
# → Se muestra el hash del commit
Que es HEAD: Es un puntero que senala la rama actualmente checked out. Esta registrado en el archivo .git/HEAD.
Tipos de Merge
Merge Fast-forward
Cuando no hay bifurcacion, se completa simplemente avanzando el puntero.
Merge 3-way
Cuando hay bifurcacion, se compara el ancestro comun con ambas ramas y se crea un nuevo commit de merge.
Resumen
Git logra un control de versiones eficiente y confiable utilizando 4 tipos de objetos (blob, tree, commit, tag) y hashes SHA-1. Entender que las ramas son solo punteros hace que las operaciones de Git sean mas intuitivas.
← Volver a la lista