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

Rebase con git rebase
oscar Escrito por oscar 27 April 2025 474 0

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:

🧠 ¿Qué significa eso?

Imagina que tienes dos ramas:

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:

📌 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

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.

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

🎯 En resumen


Comentario

Debe aceptar antes de enviar