Rebase onto con Android Studio

Rebase onto con Android Studio

En 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.

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.

Los miembros de "Los androides Premium" escuchan contenido adicional en audio sobre este artículo... ¡y otros 77 más!

Quiero más info

Hay que suscribirse para disfrutar de todo el contenido premium desde la web y la app, así como participar en las actividades premium: videoconferencias y canales premium en Discord.

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. 😉

Publicado: 2023-01-11

✉️ NEWSLETTER ANDROIDE ✉️

Deja tu email para recibir TIPS sobre ANDROID cada domingo GRATIS.

Además, AL APUNTARTE CONSEGUIRÁS el audio de 54 minutos con MI ESTRATEGIA para convertirte en un Desarrollador Android Senior DE REGALO. 🎁

Acepto que trates mis datos con privacidad.