Work on multiple changes at once, easily. No need for multiple checkouts, workspaces, constant rebasing, etc.
No need to make or name branches. Branches are just in the eye of the beholder.
Effortlessly rearrange, split, and squash your changes without ever abandoning a rebase -i halfway through because you’ve lost track of what’s happening.
Deal with conflicts whenever you feel like it, not right in the middle of your train of thought.
The oplog lets you globally undo and redo by just doing undo and redo, no need to decode a reflog. It’s version management for your version management.
Totally interoperable with a shared git repo. No one else has to adopt it for you to get the benefits.
gg: Makes things that are a slog in git ridiculously simple. You have commits A, B, C and wish it was C, B, A or even C, B+A? You made a change and now wish you had broken it out to a different branch? Just drag and drop.
Random testimonial, but I was in the same boat as you. I used stacked branches a lot (thus I rebased often), and Git mostly just worked for me. I still tried jj out of curiosity a few months ago. I haven’t used git since then.
There’s something about jj that just clicks for me. It seems my mental model matches closely the API offered by jj. I can’t name one specific killer feature, or one thing you can’t do in git and only in jj; it’s just that there is never any friction in whatever operation I’m doing. Everything seems effortless.
Yeah, I am on the lookout for a good editor integration for jj split. That’s just about the only thing I miss from Git world. (I was a GitX fan, but Magit is of course great too.)
Neat, I’ve been learning the Jujitsu tool this week. Printed the sheet and now it’s hung on the wall :)
Direct link: https://justinpombrio.net/src/jj-cheat-sheet.pdf
My obligatory exhortation: You should switch to
jj. Just do it. (And you probably want gg too.)Given I am already “happy” with git, is there a compelling reason to switch? I tried figuring this out yesterday and couldn’t.
Here are some:
rebase -ihalfway through because you’ve lost track of what’s happening.undoandredo, no need to decode areflog. It’s version management for your version management.Random testimonial, but I was in the same boat as you. I used stacked branches a lot (thus I rebased often), and Git mostly just worked for me. I still tried jj out of curiosity a few months ago. I haven’t used git since then.
There’s something about jj that just clicks for me. It seems my mental model matches closely the API offered by jj. I can’t name one specific killer feature, or one thing you can’t do in git and only in jj; it’s just that there is never any friction in whatever operation I’m doing. Everything seems effortless.
Yes. Read a tutorial or two, and give it an actual serious try for a day or two. That should be enough.
do you use magit? I quite like jj’s model but the thought of not having magit to manage is quite hard to take.
jj has a builtin diff editor that does some of what magit does. It’s still very much a prototype though:
https://www.pauladamsmith.com/blog/2025/01/cheatsheet-for-jjs-builtin-diff-editor.html
Yeah, I am on the lookout for a good editor integration for
jj split. That’s just about the only thing I miss from Git world. (I was a GitX fan, but Magit is of course great too.)i know how to use git (and like it). I dont think i need an alternative