Rebase onto con Android Studio
¿Quieres hacer un rebase onto con Android Studio?
En general, con Git podemos hacer un rebase onto. Está opción nos permite integrar los commits de una rama en otra, mientras que al mismo tiempo se conserva el histórico de commits de la rama que está siendo integrada. Además, Android Studio tiene una UI muy intuitiva para hacer esto.
Si así te resulta un poco complicado de entender, espera que voy a tratar de explicártelo mejor. 😄
Pero vamos, para que lo veas claro, un caso práctico es que mantengas tu rama de feature actualizada contra la rama principal.
Este contenido está restringido.
HAZTE PREMIUM
para difrutar de los audios y vídeos exclusivos.
Lo que se hace es sobrescribir el histórico de commits de manera que aparezca como si los commits hubieran sido realizados directamente en la rama destino.
Y si aún no lo ves claro… ¡vamos con un ejemplo! 😉
Supongamos que tenemos 2 ramas en un proyecto: feature
y main
.
Si queremos integrar los cambios de la rama feature
en la rama main
, podemos utilizar el comando git rebase onto main
desde dentro de la rama feature
.
Esto tomará cada commit de la rama feature
y los «reproducirá» en la rama main
, en lugar de crear un nuevo commit de merge que combine los dos ramas.
Es decir, es como (o sin el como) que la rama feature
salga del estado actual (último commit) de la rama principal.
Cambia la base desde la que parte: re base.
Pone los commits por encima.
Y voy más allá: piensa que dice «onto» (sobre, encima). Por lo que puedes pensar para acordarte que es «on top» de la rama main
.
De esta manera, se mantiene un histórico de commits más claro y fácil de seguir.
Y además, así nos aseguramos de que estamos al día con respecto a lo que tenemos que ir a parar cuando mergeemos nuestra Pull Request.
Imagina que llevas trabajando varios días en una rama de feature, mientras tus compañeros y compañeras están mergeando sus Pull Requests a la rama principal.
Es más que posible que si no mantienes tu rama actualizada, llegue un momento en el que se produzcan conflictos.
Es por ello, que esto es una muy buena práctica para mantenerte al día y quedarte tranquilo o tranquila de no estar yendo a tu bola.
Además, será mejor que vayas resolviendo conflictos poco a poco (si es que se producen), que si te esperas demasiado tiempo.
Al igual que pasa con la actualización de bibliotecas.
Por cierto, si por alguna de aquellas se producen, los resuelves y listo.
De hecho, con un merge también habría conflictos. 🤷🏼
Lo que sí que es verdad, es que tienes que tener en cuenta que un rebase machaca lo que ya haya en la rama desde la que se hace (en este caso, feature
), con lo que hay que usarlo sabiendo lo que se está haciendo.
Pero vamos… que dominar el arte del rebase, no es algo simplemente deseable. Es algo que para trabajar en un equipo que emplee buenas prácticas de Git, casi te diría que es un must.
Aclarado esto, desde el cliente de Git de Android Studio, lo podemos hacer todo de un modo muy amigable.
Sigue estos 5 Pasos
1. Haz fetch
Primero de nada, haz fetch para traer los cambios desde remoto y asegurarte de tener todo al día.
2. Abre el cliente de Git de Android Studio
Clica en la parte inferior derecha sobre las ramas en el repo.
3. Selecciona la rama correspondiente
Clica en la rama sobre la que quieres hacer el rebase encima de ella. En nuestro caso, la rama main
de remoto.
Efectivamente, la de remoto. Que si por lo que sea la tienes en local, igual no está actualizada y la liamos. 😄
4. Selecciona el Rebase onto
Clica en Rebase 'feature' onto 'origin/main'
(o lo que te salga en tu caso según el nombre de las ramas).
Si te salen conflictos, los resuelves uno por uno hasta que te salga el mensaje de Rebase Successful.
Una vez hecho esto, puedes seguir trabajando sin más en tu feature. Pero quizá te interese pushear los cambios de esa rama de feature a remoto. Para ver si sigue pasando el CI o lo que sea.
De cualquier modo, si sigues sin más, finalmente cuando tengas que pushear los cambios, tendrás que hacer lo que te voy a comentar en el siguiente paso.
5. Haz Force Push
Pues bien… no basta con que hagas un push sin más. Tienes que hacer un force push. Ya que estás sobrescribiendo el git history local.
La primera vez, te pedirá que confirmes si estás seguro de lo que estás haciendo.
Marca el checkbox y dale a Force Push.
Voilà!
Ya tienes tu rama actualizada y el histórico de git, precioso. 😉
Si quieres, tienes más info en la web de JetBrains.