Tutorial de Git - Rebase
Hemos cubierto fusiones básicas como
-
Fusión rápida
-
Fusión de tres vías (recursiva)
En este tutorial, vamos a introducir una de las características más importantes de Git - el rebase.
¿Qué es git rebase?
Rebase significa que estás cambiando el commit de raíz de las ramas en base a, o en otras palabras, estás reseteando el commit base al commit reciente de la rama que estás planeando fusionar, como la rama master
.
Veamos cómo se ve esto,
En este diagrama tenemos las ramas master
y Feature
y mientras trabajabamos en nuestra rama Feature
, otros miembros del equipo continuaron trabajando en la rama master
.
Queremos volver a basar nuestra rama antes de fusionarla de nuevo en el master
y cuando ejecutamos el comando de basar, cambia la confirmación en la que se basa nuestra rama de pruebas en lugar de apuntar a la C3
en lugar de a la C1
. El siguiente gráfico muestra lo que sucede después de rebasar.
Cuando fusionamos los cambios, sólo tiene que hacer una fusión rápida de nuevo porque los commits se basan ahora en el último commit del master
. Por eso el rebase es una de las características más potentes de git.
Después de que fusiones esta rama Feature
rebasada con el master
, el gráfico del registro de commits será como el siguiente,
Parece que la rama Feature
no ha existido nunca y todos los registros de confirmación están en línea recta.
Flujo de trabajo de la base
-
Crear la rama de la característica
$ git checkout -b Feature
-
Realice cambios en esta rama y confirme
$ git add modified.txt
$ git commit -m 'coment here'
-
La característica de rebase se bifurca en el
master
.
$ git rebase master
-
Fusionar la rama de la característica en
master
.
$ git checkout master
$ git merge Feature
Regla de oro del rebase
La regla de oro es no rebajar nunca la base de una rama que se ha hecho pública por la reescritura de la historia.
Si rebase una rama pública y alguien trabaja fuera de esa rama después de haberla rebasado, conseguir esos nuevos cambios en su rama master
será muy difícil porque los otros desarrolladores todavía trabajan con la rama master
original.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook