Git (III) - Reorganizar trabajo

Lectura de ~2 minutos.

En la etrada anterior vimos como organizar el repositorio Git para colaborar con nuestros compañeros. Vimos que podíamos fusionar nuestras ramas para compartir trabajo. La fusión de contenido no es la única forma para unir el trabajo de distintas ramas. En esta entrada vamos a ver la reorganización (rebase).

Como vimos, mediante el comando git merge se realiza una fusión partiendo de las dos confirmaciones comunes y creando una tercera para fusionar el trabajo realizado:

Estructura git 1

Hay otro modo de realizar esto. Reorganizar el trabajo. Esto en lugar de crear una tercera confirmación a partir de las otras dos, añade las confirmaciones a continuación de la última de la rama destino:

Estructura git 2

¿Como se hace esto? Con el siguiente comando:

$ git checkout funcionalidad_genial
$ git rebase master
First, reindoing head to replay your work on top of it...
Aplying: added staged command

Después de esto puedes avanzar master:

$ git checkout master
$ git merge funcionalidad_genial

La gran ventaja de este modo de trabajar es que el historial de trabajo queda totalmente limpio dando la sensación que el trabajo ha sido continuado. Este modo de fusionar ramas lo puedes complicar tanto como desees.

Ahora bien, esto tiene sus inconvenientes.

¿Que pasa si reorganizas confirmaciones que has enviado a un repositorio? Lo más probable es que tu compañeros se acordarán te ti y de todos tus ancestros.

Cuando se reorganiza el trabajo en Git, abandonas el trabajo para pisarlo por otro. Aunque sea similar es diferente. De modo que si reorganizas el trabajo que ha sido publicado tus compañeros tendrán que re-fusionar su trabajo con el tuyo para poder continuar.

Así que por favor no reorganices trabajo que se ha subido al servidor.

Nos vemos en las próximas líneas.

Escrito el 12/06/2017