git add --patch

Tabla de contenidos

Cuando estás haciendo un componente complejo o una funcionalidad en varios pasos, a veces ocurre que la mente se dispersa y sin quererlo, atacas varios frentes a la vez en lugar de ir de uno a uno, por lo que, cuando vas a commitear, acabas mezclando cosas diferentes en el mismo commit, lo cual no es lo ideal, de ahí la necesidad de utilizar git add --patch.

De acuerdo con la documentación de git el comando ejecuta git add --interactive pero omite el menú de comandos inicial y salta directamente al subcomando parche, lo que en esencia significa que, con este comando, en lugar de añadir el archivo en su totalidad directamente, podemos repasar los cambios que se han hecho sobre el mismo de forma interactiva y decidir cuáles queremos añadir al stage para ser commiteados y cuáles no.

Cómo usar --patch

Ejecutando git add <file> -p accedemos a la revisión del archivo, y podemos elegir entre las diferentes opciones para cada uno de los trozos de código en los que se va a dividir, para aceptar o rechazar los cambios o dejadlos sin decidir y pasar al siguiente trozo, entre otras opciones, que son:

La pega que podemos encontrar es que git nos presenta las modificaciones sobre el archivo agrupadas o divididas dependiendo de su proximidad dentro del archivo, por lo que a veces ocurre que dos modificaciones no relacionadas o que pertenecen a funcionalidades diferentes, están escritas en líneas consecutivas y por lo tanto, no podemos dividir esa partición, que es en realidad la parte que nos gustaría dividir.

Previsualización de git add patch

Para estos casos, las opciones s y e son especialmente útiles. s divide el trozo de código en trozos más pequeños, pero a veces no es suficiente porque necesitamos más granularidad y decidir por nosotros mismos. Es entonces cuando debemos elegir la opción e, que sirve para activar la edición manual, y seguir las instrucciones que nos indican cómo proceder para editar estos trozos de código.

Previsualización del modo de edición manual de git add patch

En nuestro caso, si queremos añadir la segunda línea pero no la tercera, bastará con borrar la línea entera.

De esta manera, aunque hayamos mezclado funcionalidades diferentes, podremos mantener nuestros commits limpios y ordenados por funcionalidades

Previsualización de log de commits del repositorio

Conclusiones

Conocer en profundidad las herramientas con las que trabajamos a diario nos permite mejorar en nuestro día a día y ser más productivos, lo que se traduce en menos agobios y más eficiencia y eficacia a la hora de realizar una tarea o desarrollar un proyecto, lo que a menudo significa terminar el trabajo a tiempo y poder vivir más vida fuera del trabajo, por eso es una buena idea, aunque sea poco a poco, ir indagando y profundizando en el uso de las mismas :)

Para saber más

comments powered by Disqus

Si te ha parecido interesante

Tanto si tienes alguna duda o quieres charlar sobre este tema, como si el contenido o nuestros perfiles te parecen interesantes y crees que pdemos hacer algo juntos, no dudes en ponerte en contacto con nosotros a través de twitter o en el email hola@mamutlove.com