← Git

Reto de código

Reto 004 - Ramas y merge

Escenario

Vas a simular el flujo de trabajo más común en equipo: crear una rama de feature, trabajar en ella y luego integrarla a main con un merge. Al final, main debe contener el trabajo de la feature y la rama de feature ya puede borrarse.

Punto de partida: un repo con al menos un commit en main.

Cómo resolverlo

# 1. Partir de main actualizada y crear la rama de feature
git switch main
git switch -c feature/saludo
# Creamos y nos cambiamos a feature/saludo en un solo paso

# 2. Hacer cambios en la rama de feature
echo "console.log('Hola equipo')" > saludo.js
git add saludo.js
git commit -m "feat: agrega script de saludo"

# 3. Volver a main para integrar la feature
git switch main

# 4. Mergear la feature en main
git merge feature/saludo
# Si main no avanzo, sera un fast-forward (solo mueve el puntero)
# Si main avanzo, se crea un merge commit

# 5. Borrar la rama ya integrada
git branch -d feature/saludo

Por qué funciona

Trabajar en una rama aparte mantiene main estable mientras desarrollas. El merge, ejecutado desde la rama destino (main), trae el trabajo de la feature. Si main no recibió commits nuevos, es un fast-forward; si sí, se crea un merge commit. Una vez integrada, la rama de feature ya cumplió su propósito y -d la borra de forma segura (solo permite borrarla si ya está mergeada).

Solución completa

Ver solución comentada
# Crear y trabajar en la rama de feature
git switch main
git switch -c feature/saludo
echo "console.log('Hola equipo')" > saludo.js
git add saludo.js
git commit -m "feat: agrega script de saludo"

# Integrar a main
git switch main
git merge feature/saludo

# Verificar que el archivo llego a main
ls
# saludo.js aparece aqui

git log --oneline
# muestra el commit de la feature en main

# Limpiar la rama ya integrada
git branch -d feature/saludo
# -d solo borra si ya esta mergeada (seguro)
# -D fuerza el borrado aunque no este mergeada (cuidado)

Clave: el merge se hace desde la rama a la que quieres integrar (main), no desde la feature. Borra las ramas ya integradas con -d para mantener el repo limpio.