martes, 3 de marzo de 2015

Mantén el historial GIT limpio.

Prisas, despistes, inoportunos de última hora, dobles interpretaciones, gerencia inestable (en más de un sentido ;) ). Todas estas cosas, y muchas más, son las que provocan que acabemos con varios commits en el repositorio local de GIT para un work item que en un principio tiene bien definido el "Done" y sus fronteras. Esto genera un historial lioso e ilegible que no debería reflejarse en las ramas remotas. La mayoria de las veces, un ammend soluciona los líos; en otras se requiere una medida una tanto más drástica.

Supongamos que hemos generado 4 commits locales a partir de la rama remota para finalizar work item. En la rama remota lo único que interesa es el commit que refleja todas las modificaciones realizadas necesarias para el work item; por lo que antes de realizar el push debemos reescribir el historial de la rama local y "aplastar" (squash) todos los commits en uno sólo.

Por suerte, GIT nos permite reescribir el historial utilizando el comando rebase. Asumiendo el ejemplo anterior sólo necesitaríamos ejecutar el comando:

git rebase -i HEAD~4
y nos aparece un editor con los 4 últimos commits a partir de donde está la etiqueta HEAD. En este editor debemos marcar el primer commit con la opción "pick" y el resto con la opción "squash". Básicamente le estamos diciendo que combine los 4 commits en el primero.

El resultado final es un solo commit que contiene todos los cambios realizados para la finalización del work item. Ya sólo queda realizar el push a la rama remota sin más complicaciones.


No hay comentarios:

Publicar un comentario