JJ for the executively dysfunctional
I've been playing around with Jujutst/jj
, and there's something liberating about it. One particularly handy strategy I've been running into has been throwing out a new "change" (to use Steve Klabnik's terminology, i.e. the Jujutsu-native unit of change that's distinct from Git commits) at a whim.
This has been nice to create a kind of to-do list of changes that should be made as part of a larger project or feature (or maybe just on the side) without having to dedicate yourself to finishing one thought before moving to the other. You can just scattershot a bunch of half-baked thoughts and work on them as you go!
Here's what that looks like. Let's say I'm working on part of a website revamp, which is change y...
here:
jackson@Jacksons-MacBook-Pro website % jj log
@ tutpmxxs jax.mostoller@gmail.com 2025-05-10 23:43:02 8b755f87
│ Unify post types into one stream
◆ yqlnrwrv jax.mostoller@gmail.com 2025-05-10 23:39:07 279278c6
│ Website revamp
Currently, I'm working on some organizational stuff ("Unify post types...") but let's say I suddenly realize I want to write up a new blog post. I can start that right away by just kicking off a new change, without worrying about what I have commited in my current working copy:
jackson@Jacksons-MacBook-Pro website % jj new y -m "post: JJ for ADHDers"
Working copy (@) now at: slulvryx d4cd198d (empty) post: JJ for ADHDers
Parent commit (@-) : yqlnrwrv 279278c6 Revamp 2025; post-centric
There are a few important arguments for jj new
here:
y
is the shorthand reference to the parent change. Usingy
let us throw this random side tangent in as a child of the bigger "Revamp" change, but we also could've put it somewhere earlier or later in the tree of changes—and it's probably easy to move it around after the fact, too, but I haven't messed with that yet.-m
lets us add a description of the change right away, instread of having to run another command to do that later.--no-edit
was not used in this example, but you could use it if you wanted to jot down a description for a change to be made without actually getting started on it right away. In that case, your working copy stays on your existing change, rather than switching imediately over to the newly-created one.
It's good to remember that the command for hopping between changes is jj edit <revname>
.