Tema 14: Merge por avance directo
Integrar una rama significa incorporar su trabajo a la línea que tienes seleccionada. Ejecuta primero git switch main si el destino es main. Después git merge feature/saludo intenta incorporar el trabajo de esa rama en la actual. El sentido de la operación depende de dónde estás.
Hay fast-forward, o avance directo, cuando la posición actual es antecesora de la otra rama. main no ha desarrollado un camino diferente: basta con mover su referencia al commit más reciente de feature/saludo. No se crea un commit adicional de integración.
git merge --ff-only feature/saludo exige precisamente esa situación. Si ambas ramas han avanzado por caminos distintos, se detiene. No descarta commits para forzar un avance directo. Los otros tipos de integración se explican en los siguientes temas.
Los commits de feature/saludo pasan a formar parte del historial alcanzable desde main. La rama feature/saludo sigue existiendo: integrar no implica borrarla. Puedes comprobarlo con branch, log --oneline y status, comandos que ya conoces.
Antes de integrar, termina o restaura los cambios pendientes. El laboratorio exige un estado limpio para que observes únicamente el efecto de la integración. En el grafo verás que main cambia de posición y apunta al mismo commit que la rama integrada.
Comandos para probar #
1git status 2git switch main 3git merge --ff-only feature/saludo 4git log --oneline 5git branch
Error que conviene evitar #
Invertir el destino y ejecutar el merge desde la rama de trabajo. Selecciona primero la rama que debe recibir los commits.
Laboratorio local #
Prueba los comandos y observa qué cambia. Puedes reiniciar sin guardar una entrega. Los retos evaluables y el cuestionario están en las actividades de este tema.
Git / práctica local
Avance directo
Aplicar edición cambia el archivo; git add lo prepara.
Historial de commits
Cada punto representa una versión guardada.
- 0000003: Añade pie; feature/saludo
- 0000002: Prepara documento; HEAD → main
- 0000001: Commit inicial;
Comparar trabajo, índice y HEAD
Trabajo
Título inicial Centro Pie inicial
Índice (staging)
Título inicial Centro Pie inicial
HEAD
Título inicial Centro Pie inicial
TERMINAL
Sesión local preparada. Escribe help para consultar los comandos de este tema.
Comandos disponibles y límites
git --version · git config --global <clave> [valor] git init · git status git add <archivo | .> · git commit -m "mensaje" · git log git log --oneline · git switch <rama> (antes: checkout) git restore [--staged] <archivo> · git commit --amend [-m "mensaje" | --no-edit] git switch --detach <commit> · HEAD · HEAD~1 git diff [--staged | <commit> <commit>] git remote [-v] · git remote add <nombre> <URL> · git remote get-url <nombre> · git remote set-url <nombre> <URL> git clone <URL> git push [-u] <remoto> <rama> ssh-keygen -t ed25519 · ssh -T git@github.com (ficticios) git branch [nombre] · git branch -m <nombre> · git branch -d <rama> · git switch -c <rama> git merge [--ff-only] <rama> help · clear
Sesión en memoria: recargar descarta la práctica. Doscientas acciones como máximo. Dos archivos editables de hasta 250 líneas. Diez ramas como máximo. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo.
Resumen
- Avanza hasta un commit que ya existía.
- No hace falta un commit de integración.
- La operación se detiene si hay caminos divergentes.
- Invertir el destino y ejecutar el merge desde la rama de trabajo. Selecciona primero la rama que debe recibir los commits.