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
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.
