Learn

Merge o rebase

Git

Dos formas de combinar dos ramas, dos historiales distintos. Elegir según el contexto.

Requisitos previos

Cuando quieres traer los cambios de una rama a otra, Git te ofrece dos herramientas: merge y rebase. Producen historiales distintos, con ventajas diferentes.

Merge: preservar el historial real

git merge toma las dos ramas y crea un merge commit que une sus historias. El grafo se mantiene fiel a la realidad: puedes ver exactamente cuándo divergió la rama y cuándo se integró.

shell
git switch main
git merge mi-feature

El resultado en git log --graph parece dos líneas paralelas que convergen en un solo punto. Es legible, rastreable y no destructivo.

Rebase: linealizar el historial

git rebase reproduce tus commits encima de otra rama. El resultado: un historial perfectamente lineal, como si siempre hubieras trabajado después de los últimos commits de main.

shell
git switch mi-feature
git rebase main

Git mueve cada commit de mi-feature uno a uno, reproduciéndolos después del último commit de main. El historial se convierte en una línea recta, sin merge commit.

Comparación rápida

MergeRebase
HistorialPreservado, con merge commitLinealizado, commits reescritos
Seguro en rama compartidaNo
Legibilidad del grafoMuestra las ramas realesLimpio y lineal

Cuándo usar cada uno

  • Merge: para integrar una feature en main, para mantener un rastro claro de dónde vienen las cosas. La opción por defecto en un contexto colaborativo.
  • Rebase: para limpiar el historial de una rama local antes de abrir un pull request. Haces git rebase main para que tu PR se aplique limpiamente sobre el código más reciente.

Un flujo habitual: trabajas en mi-feature, ejecutas git rebase main para ponerte al día sin merge commits parásitos, y luego abres una PR. GitHub fusiona entonces con un merge commit oficial.

git-scm.com - git merge git-scm.com - git rebase

Marca los pasos para desbloquear lo siguiente

Volver al curso