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?

¿Cuándo NO usar jj?

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