Introducción a Jujutsu

Por: Artiko
jujutsujjvcsgit

¿Qué es Jujutsu?

Jujutsu (comando jj) es un sistema de control de versiones creado en Google por Martin von Zweigbergk. Su objetivo es ofrecer una experiencia más intuitiva y segura que Git, manteniendo compatibilidad total con repositorios Git.

No es un wrapper sobre Git — es un VCS completo con su propio modelo de datos que puede usar Git como backend de almacenamiento.

Diferencias clave con Git

ConceptoGitJujutsu
Staging areagit add para seleccionar cambiosNo existe. El working copy es un commit
Estado de trabajoCambios sin trackear, staged, committedTodo es un commit automáticamente
Deshacergit reflog + comandos variadosjj undo para cualquier operación
ConflictosBloquean merge/rebase hasta resolverlosSe almacenan en el árbol, puedes seguir trabajando
RamasReferencias mutables (branches)Bookmarks (punteros a commits)
Editar historialgit rebase -i (interactivo)jj squash, jj split, jj edit (directos)
DescendientesDebes hacer rebase manualSe actualizan automáticamente

El modelo mental de jj

En Git piensas en 3 estados: working directory, staging area, commits. En jj solo hay commits:

Git:        Working Dir → Staging → Commit
Jujutsu:    Working Copy (ya es un commit)

Cuando modificas un archivo, jj actualiza el commit del working copy automáticamente. No necesitas add ni stage.

¿Cuándo elegir jj sobre Git?

  • Quieres editar el historial frecuentemente (rebase, squash, split)
  • Te frustra el staging area de Git
  • Trabajas con conflictos frecuentes (monorepos, ramas largas)
  • Quieres experimentar sin miedo a perder trabajo
  • Ya usas Git y quieres una mejor interfaz sin migrar

¿Cuándo NO usar jj?

  • Tu equipo no está dispuesto a aprender una herramienta nueva
  • Necesitas soporte nativo en IDEs (aún limitado)
  • Dependes de Git hooks complejos

jj es compatible con Git — puedes usarlo en repos Git existentes sin que tus compañeros noten la diferencia.