Git Log o dónde estoy ahora

Tabla de contenido

No hay proyecto en el que no me implique a fondo, voy tan profundo como puedo tratando de entender la idea de negocio y a los usuarios finales para aportar valor desde cualquier parte, pero cuando termino, me olvido de todo con la misma intensidad, así que a veces no sé dónde estoy cuando lo retomo.

Acabo de volver a este repo tras semanas/meses. ¿Qué ha pasado aquí y dónde estoy parado?

La falta de continuidad obliga a dedicar tiempo a recordar lo que ya sabía, a recuperar lo olvidado, y cuando ya está todo claro y tengo los siguientes pasos y tareas planificadas, voy a programar y llega la sorpresa → Si cuando te fuiste lo dejaste todo desordenado, sigue desordenado a tu vuelta: con más ramas de las que me gustaría ver, me toca hacer arqueología del recuerdo para descubrir si son features mergeadas, olvidadas, temporales o descartadas.

Git log

Los 3 comandos que siempre utilizo y que me ayudan a situarme son:

git log -20 --oneline porque 20 commits son suficientes.

git log --oneline --graph --decorate --all porque me ayuda a leer el pasado: merges, ramas, hotfixes y PRs.

git log --oneline main..development para comprobar los commits que tiene una rama y que le faltan a la otra, o git log --name-status main..development para listar los archivos con su estado.

Guarda el comando en un alias → git config --global alias.lg "log --oneline --graph --decorate --all" y úsalo así → git lg

¿Qué ha pasado con ESTE archivo?

Cuando me interesa un archivo en concreto, pues lo consulto → git log -- path/al/archivo incluso si fue renombrado → git log --follow -- path/al/archivo y si quiero ver las modificaciones exactas → git show <commit> -- path/al/archivo

¿Cuándo y por qué se añadió ESTA línea?

No para señalar culpables sino para entender decisiones pasadas → git blame path/al/archivo

Ramas mergeadas

De esta jungla, ¿qué se puede eliminar? Las ramas mergeadas → git branch --merged. También puedes consultar las no mergeadas → git branch --no-merged

Git diff

A veces los mensajes de los commits no bastan, por eso es útil ver los cambios entre ramas → git diff main..development pero si hay muchas diferencias y se hace difícil de leer, es mejor buscar los nombres de los archivos → git diff --name-only main..development y consultar el detalle → git diff main..development -- path/al/archivo

También puedes comparar las diferencias entre 2 commits → git diff --name-only HEAD..33a918ac

Conclusión

En el fondo lo que ocurre es que cuando las inmersiones en los proyectos son tan rápidas, violentas y poco duraderas, el conocimiento se queda en la memoria a corto plazo, como cuando estudias para un examen y a los 3 meses no recuerdas la mitad de las cosas.

Para luchar contra esto, la solución más efectiva es abandonar la programación. O dejar todo documentado, limpio y ordenado antes de salir, para cuando te toque volver. Borrar ramas mergeadas o archivar las descartadas es crucial, y saber manejarse con Git, también, porque no es sólo una herramienta para guardar código sino para recuperar contexto, entender decisiones pasadas y pensar con claridad en el futuro.

Recursos

git log

comments powered by Disqus

Si te ha parecido interesante

Tanto si tienes alguna duda o te apetece charlar sobre este tema, así como si el contenido te parece interesante o crees que pdemos hacer algo juntos, no dudes en ponerte en contacto con nosotros a través del email hola@mamutlove.com