Javier Valencia Javier Valencia

Blog personal de Javier Valencia

Terminal con los comandos git bisect, git blame y git log --graph

Git avanzado II: detective — bisect, blame y reflog

8 de mayo de 2026 · 4 min de lectura · 42 visitas

Segunda entrega de la serie Git avanzado. La anterior fue sobre reescribir la historia con rebase, cherry-pick y amend. Tiempo de lectura estimado: 5 minutos. La parte menos glamurosa pero más salvavidas de git: los comandos para investigar. No los escribes a diario, pero el día que los necesitas, te ahorran horas. Tres: git bisect para cazar el commit que introdujo un bug, git blame para saber quién escribió qué línea y cuándo, y git reflog para recuperar lo que parecía perdido para siempre. git bisect: búsqueda binaria de bugs El escenario: ayer funcionaba, hoy no. Entre ayer y hoy...

Terminal con los comandos git rebase, git cherry-pick y git commit --amend

Git avanzado I: reescribir la historia

7 de mayo de 2026 · 5 min de lectura · 41 visitas

Primera entrega de la serie Git avanzado. Si vienes saltado desde el nivel intermedio o básico, aquí entramos en el terreno donde git deja de ser sistema de control de versiones y empieza a ser editor de historia. Tiempo de lectura estimado: 5 minutos. Los tres comandos de hoy permiten modificar commits que ya existen: combinarlos, reordenarlos, cambiarles el mensaje, sacarlos de una rama y meterlos en otra. Son potentes y razonablemente peligrosos: si la historia que estás reescribiendo ya la han visto otros, les vas a desordenar el mundo. La regla general, antes de empezar: reescribe historia local todo...

PostgreSQL desde cero (II): tipos, restricciones y relaciones

PostgreSQL desde cero (II): tipos, restricciones y relaciones

6 de mayo de 2026 · 5 min de lectura · 36 visitas

Segunda entrega de la serie PostgreSQL desde cero a pro. Tiempo de lectura estimado: 11 minutos. En la entrega anterior levantamos PostgreSQL, creamos una base de datos y metimos las primeras filas. En este post nos centramos en lo que convierte PostgreSQL en una base de datos seria: tipos ricos y restricciones que garantizan que los datos sean correctos desde la base de datos, no desde la capa de aplicación. El principio subyacente: si puedes hacer que un dato imposible sea imposible de insertar, hazlo. Las validaciones en la aplicación están muy bien; las restricciones en la base de datos...

Terminal con los comandos git stash, git tag y git fetch

Git intermedio III: stash, tags y fetch

6 de mayo de 2026 · 4 min de lectura · 56 visitas

Tercera entrega de la serie Git intermedio. Las anteriores: ramas y deshacer con cabeza. Tiempo de lectura estimado: 5 minutos. Para cerrar el nivel intermedio, tres comandos que resuelven situaciones muy concretas pero frecuentes: guardar trabajo en curso cuando algo urgente te interrumpe (git stash), marcar un punto importante de la historia (git tag) y mirar el estado del remoto sin traerte nada (git fetch). No son glamurosos, pero hacen el día a día más tranquilo. git stash: guardar trabajo a medias El escenario: estás en medio de algo, con cambios en el working tree que aún no quieres commitear,...

Terminal con los comandos git reset, git revert y git reflog

Git intermedio II: deshacer con cabeza

5 de mayo de 2026 · 5 min de lectura · 53 visitas

Segunda entrega de la serie Git intermedio. La anterior fue sobre ramas: branch, switch y merge. Tiempo de lectura estimado: 5 minutos. Deshacer es donde la gente más se pone nerviosa con git, y con razón: algunos comandos de deshacer pueden borrarte trabajo de verdad. La buena noticia es que git tiene tres verbos distintos para deshacer, cada uno diseñado para un escenario concreto: git restore, git reset y git revert. Usarlos bien es cuestión de saber qué toca cada uno: ficheros, puntero de la rama, o historia publicada. git restore: deshacer cambios en ficheros git restore es el "deshacer"...