Inicio / Git / Bases de Git / Ramas y Merge (Teórico)
Teoría

Ramas y Merge

Teórico — El superpoder de Git: trabajar en funcionalidades en paralelo sin romper el código principal.

01 ¿Qué son las ramas?

Una rama (branch) es una línea independiente de desarrollo. Imagina que tu proyecto es un árbol: el tronco es la rama principal (main) y cada branch es una rama que sale del tronco para trabajar en algo nuevo sin afectar lo demás.

Analogía: Piensa en un documento de Word donde tienes "Guardar como..." para crear una copia, trabajas en ella, y cuando estás satisfecho, copias los cambios de vuelta al original. Git hace eso pero mucho mejor — sin duplicar archivos.

Cuando creas una rama, Git no copia los archivos. Solo crea un puntero al commit actual. Esto lo hace extremadamente rápido y liviano, incluso en proyectos enormes.

02 ¿Por qué usar ramas?

Proteger el código estable
La rama main siempre tiene código que funciona. Si experimentas en otra rama y falla, main no se ve afectada.
Trabajar en equipo
Cada persona (o cada funcionalidad) puede tener su propia rama. Nadie pisa el trabajo del otro. Al terminar, se integran los cambios.
Cambiar de contexto
¿Estás trabajando en un feature y te llega un bug urgente? Puedes cambiar a otra rama, arreglar el bug, y volver a tu feature exactamente donde lo dejaste.

03 Comandos esenciales de ramas

Crear, listar y cambiar de rama

Terminal
# Ver en qué rama estás y listar todas
git branch

# Crear una nueva rama
git branch nombre-rama

# Cambiar a otra rama
git checkout nombre-rama

# Crear y cambiar en un solo paso (atajo)
git checkout -b nombre-rama

# Eliminar una rama (después de merge)
git branch -d nombre-rama
HEAD es un puntero especial que indica en qué rama estás trabajando ahora mismo. Cuando haces git checkout, mueves HEAD a la rama indicada. En git log verás algo como (HEAD -> main).

04 git merge — Unir ramas

Cuando terminas de trabajar en una rama, necesitas integrar esos cambios de vuelta a la rama principal. Eso es un merge (fusión).

Flujo típico de merge

Terminal
# 1. Asegurarte de estar en la rama destino (main)
git checkout main

# 2. Fusionar la otra rama
git merge nombre-rama

# 3. (Opcional) Eliminar la rama ya fusionada
git branch -d nombre-rama
Fast-forward

Si main no avanzó desde que creaste la rama, Git simplemente mueve el puntero hacia adelante. No crea un commit extra de merge.

Merge commit

Si main tiene commits nuevos que la rama no tiene, Git crea un commit de merge que une ambas historias en un punto.

05 Conflictos de merge

Un conflicto ocurre cuando dos ramas modificaron las mismas líneas del mismo archivo. Git no sabe cuál versión elegir, así que te pide que lo resuelvas manualmente.

Cómo se ve un conflicto

archivo.txt
<<<<<<< HEAD
Esto es lo que tiene tu rama actual (main)
=======
Esto es lo que tiene la otra rama (feature)
>>>>>>> feature

Para resolver: edita el archivo, elige qué contenido mantener (o combínalos), elimina las marcas <<<, ===, >>>, y luego haz git add + git commit.

Tip: Los conflictos no son errores. Son parte normal de trabajar en equipo. La mejor forma de evitarlos es hacer ramas cortas y hacer merge frecuentemente.

06 Buenas prácticas para ramas

Práctica Ejemplo
Usa nombres descriptivos feature/login-form, fix/navbar-color
Haz ramas cortas (pocos días) Menos conflictos al hacer merge
Elimina ramas después de merge git branch -d nombre-rama
No trabajes directo en main Siempre crea una rama para cada tarea

Cuestionario de evaluación

Pon a prueba lo que aprendiste sobre ramas y merge.

1. ¿Qué es una rama (branch) en Git?

2. ¿Qué comando crea una rama Y te cambia a ella al mismo tiempo?

3. Antes de hacer merge, ¿a qué rama debes moverte?

4. ¿Cuándo ocurre un conflicto de merge?

5. ¿Cuál es una buena práctica con las ramas?