logoalt Hacker News

minrawstoday at 7:02 PM2 repliesview on HN

jj is one of the few new devtools I was quite frustrated with while starting out but could see the value so stuck around and man is it so nice.

For anyone curious the big thing with jj is you can undo. Basically if you were running a rebase and bungled a commit sha or branch name, no worries undo your way out, if you forgot to push but abandoned a commit not issues undo it. Same with all jj commands.

Delta db takes this a step further and everything you edit is a change so your actual edits are also all saved.

I find non destructive-ness for as long as possible approach very nice, since there aren't as many constraints on us not being able to do it nowadays, we had limited storage and stuff in 2000s perhaps but in 2026 even with the killer SSD prices it's fairly cheap to buy more SSD, we can definitely waste 100MB per project storing redundant history we may not ever need.

Same way in photoshop non destructive editing took over, especially useful for humans, but works for AI and LLMs too, they can undo their mistakes as well.


Replies

yegletoday at 7:20 PM

A term coined within Google that describes the best part (to me at least) of jj: delayed conflict resolution.

You worked on multiple things, you sync with the upstream, then boom now you have conflicts in one or more of your local branches.

Instead of immediately presenting you a conflict resolution view (usually 3 pane vimdiff) and you'll have to resolve at the sync time, the commits are simply marked as "have conflict", and you can continue working on other things until you have time to deal with it.

And for a chain of commits that all have conflicts, chances are fixing the first conflict automatically resolves all other conflicts in the chain, thanks to the auto-rebasing feature.

show 1 reply
sshinetoday at 7:06 PM

Are you saying push + undo = unpush?

show 2 replies