Rebase con git rebase
Vamos a ver git rebase, un comando de Git que reaplica los commits de una rama sobre otra rama base, reescribiendo su historial

Vamos a ver git rebase
, un comando de Git que reaplica los commits de una rama sobre otra rama base, reescribiendo su historial.
Observemos a continuación la documentación oficial donde se obtuvo información para realizar el empelo que mencionamos mas adelante:
- https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase
- https://git-scm.com/docs/git-rebase
🧠 ¿Qué significa eso?
Imagina que tienes dos ramas:
main
: la rama principal.feature
: una rama donde has trabajado en algo nuevo.
Ambas ramas comparten un punto en común en el pasado, pero main
ha recibido nuevos cambios desde que creaste feature
.
git rebase main
en la rama feature
:
- Toma los commits únicos de
feature
. - Los mueve como si se hubieran creado después de los commits nuevos en
main
.
📌 Esto hace que el historial sea más limpio y lineal, en lugar de ramificarse con muchos "merge commits".
🔥 ¿Qué diferencia hay entre git merge
y git rebase
?
Concepto | git merge |
git rebase |
---|---|---|
Qué hace | Crea un nuevo commit de fusión (merge commit) | Mueve tus commits encima de otra rama |
Historia | Mantiene la historia real (más ramificada) | Reescribe historia (más lineal) |
Commit extra | Sí, crea un commit de merge | No, reordena commits existentes |
Ideal para | Mantener trazabilidad del trabajo en equipo | Tener una historia limpia en ramas locales |
🧪 Ejemplo práctico: Rebase
1️⃣ Crea un nuevo repositorio
Primero creamos una carpeta, esta la llamaremos de la siguiente forma pero el nombre puede ser diferente:
mkdir rebase-ejemplo && cd rebase-ejemplo
Creamos un proyecto git de la siguiente forma:
git init
Nota: realizamos la configuración del usuario y correo de git para poder hacer los commits
2️⃣ Crea el archivo inicial y haz el primer commit como se vio a detalle en confirmar cambios de git
echo "Línea original" > archivo.txt
git add archivo.txt
git commit -m "Commit inicial en main"
Respuesta
[master (root-commit) e077c3a] Commit inicial en main
1 file changed, 1 insertion(+)
create mode 100644 archivo.txt
3️⃣ Crea una nueva rama llamada feature de main
git checkout -b feature
Agrega una línea nueva:
echo "Línea desde feature" >> archivo.txt
git commit -am "Agrega línea desde feature"
Respuesta
[feature 07d9ffb] Agrega línea desde feature
1 file changed, 1 insertion(+)
4️⃣ Vuelve a main y haz un cambio
git checkout main
echo "Línea desde main" >> archivo.txt
git commit -am "Agrega línea desde main"
Con lo anterior debemos haber creado lo siguiente:
main: A - - - B
\
feature: C
- A: Commit inicial en main
- B: "Agrega línea desde main"
- C: "Agrega línea desde feature" (creado desde A antes de que B existiera)
5️⃣ Ahora rebasa feature sobre main
Para hacer este paso debemos asegurarnos de estar en la rama reature, ya que vamos a pasa los commits de main -> reature
git checkout feature
git rebase main
🔍 ¿Qué pasó aquí?
main: A---B
\
feature (rebase): C'
Git movió tu commit de feature para que venga después del commit más reciente de main.
C'
: Es una nueva versión del commit C, pero ahora aparece como si se hubiera creado después deB
.- Git reescribió el historial para que el commit de
feature
esté sobre la versión más actual demain
.
El archivo ahora tendrá ambas líneas (de main y de feature), y el historial es lineal.
⚡ Cuándo usar merge
vs rebase
Si querés... | Usá... |
---|---|
Mantener registro de cómo evolucionó el trabajo (historial real) | merge |
Tener un historial limpio y lineal | rebase |
⚠️ Advertencias sobre rebase
- Nunca hagas rebase a commits que ya enviaste a un repositorio compartido (
push
) si otras personas trabajan en ellos.- Cambiás la historia y podrías romper el trabajo de los demás.
- Usalo con confianza en tu trabajo local antes de hacer
push
.
🎯 En resumen
git merge
: Une ramas, mantiene la historia como pasó realmente.git rebase
: Reescribe historia para que parezca más limpia y ordenada.