Lecciones de seis meses usando jj junto a Git para limpiar historiales

Fuentes: Conversations with JJ

Después de seis meses combinando jj y Git como herramienta de limpieza de historiales en pull requests, el autor comparte su experiencia con el sistema de control de versiones jj y la capa TUI jjui. El artículo se aleja de su temática habitual, Typst, para detallar qué le atrae de jj, qué le costó y qué le gustaría ver mejorado.

Entre las ventajas destaca la edición fluida del historial y la posibilidad de saltar entre commits con naturalidad, apoyada en los atajos de jjui. Valora también el conjunto de operaciones de alto nivel con comandos diferenciados (como jj split) y la función de deshacer, que permite experimentar con cambios y volver atrás sin fricción. Subraya, además, la interoperabilidad con Git como decisión pragmática del proyecto.

Como obstáculos menciona la salida de jj log, que muestra muchas ramas de otras personas y dificulta localizar el trabajo propio, así como la tendencia de jj a dejar la HEAD detached al alternar con Git y a no avanzar automáticamente la rama al crear commits. También critica el sistema de instantáneas automáticas, que puede introducir archivos no deseados (como node_modules) en commits antiguos y desencadena rebase de forma implícita, especialmente desde jjui. El comportamiento de fusión same-change le sorprendió absorbiendo cambios entre commits A y B.

El autor sigue sin migrar por completo: cuando no necesita reescribir historia, prefiere GitHub Desktop para dividir diffs visualmente. Concluye que adoptaría jj totalmente si existiera una GUI nativa y pulida para visualizar y dividir diffs, algo por lo que incluso pagaría.