Git Commit

Oscar David Arbeláez Echeverri
Oscar David Arbeláez Echeverriodarbelaeze@gmail.com

git commit puede ser el comando más importante en el mundo de git. Este comando agrega semántica a un repositorio de git (es decir, no solo almacenamos cambios sino también la razón por la cual se realizaron).

Commit message

La manera como agregamos sentido a los cambios realizados en git es mediante un commit message, este mensaje se puede agregar desde el editor predeterminado del sistema mediante git commit o mediante un argumento de consola:

git commit -m "Tu propio commit message"

Es importante saber qué escribir en este mensaje. Al principio nos vemos inclinados a escribir mensajes del tipo:

git commit -m "Realizando cambios"
# ó
git commit -m "Actualiando los archivos a.py y b.py"

Estos son malos ejemplos de commit messages: por una parte son obvios, ya que git no nos permitiría realizar un commit si no hay cambios en el repositiorio, y por otra parte redundantes, ya que git show <commit hash> muestra no solo la lista de archivos modificados sino los cambios específicos realizados en dicha revisión.

Buenos commit messages

Un buen commit message explica la intención que tuvieron los cambios, por ejemplo,

git commit -m "Cambia el color del fondo de la pagina about"
# ó
git commit -m "Crea una nueva sección en el blog"

Por otra parte, buenos commit messages son consisos (menos de 72 caractéres) y estan escritos en infinitivo, ya que estas revisiones son reversibles, y al revertirlas se generan automáticamente mensajes del tipo

Revert "Crea una nueva sección en el blog"

que no tienen tanto sentido para otras conjugaciones.

Cuándo realizar un commit

Distintos autores tienen distintas opiniones en cuanto a cuándo realizar un commit, sin embargo, yo me adhiero a la teoría del unit of work (unidad de trabajo), me gusta definir una unidad de trabajo como un set de cambios mínimo que nos lleva desde un software funcional hasta otro software funcional acercandonos a una meta más grande.

Por ejemplo, si tengo el objetivo de crear un blog, descargar los archivos básicos (wordpress por ejemplo) sería una unidad de trabajo, no toma tanto tiempo como el objetivo final (crear un blog) pero me lleva un paso adelante, y se puede celebrar con un:

git commit -m "Agrega archivos basicos del blog engine"

Una segunda unidad de trabajo sería elegir y descargar los archivos relacionados con el tema deseado para el blog, este paso nuevamente nos lleva desde un software funcional a otro software funcional pero no hasta el objetivo final, este pequeño paso puede ser celebrado con un:

git commit -m "Configura archivos relacionados con un tema"

Conclusión

Realizar buenos commits a buen tiempo y con buenos commit messages toma tiempo y práctica, hay que saber que pese a que los commit messages sean malos al principio no perderemos todas las ventajas de un sistema de control de vesiones, ¡así que a experimentar con commit messages y unidades de trabajo!