Re:A Coherent Vision for the Future of Version Control
by aduwah on Sunday March 22, 2026 @03:05PM
(#47480910)
The only reason I have not defaulted to jj already is the inability to be messy with it. Easy to make mistakes without "git add"
[ Parent
| on HN ]
Re:A Coherent Vision for the Future of Version Control
by dzaima on Sunday March 22, 2026 @03:57PM
(#47481454)
But you do have the op log, giving you a full copy of the log (incl. the contents of the workspace) at every operation, so you can get out of such mistakes with some finagling.
You can choose to have a workflow where you're never directly editing any commit to "gain back autonomy" of the working copy; and if you really want to, with some scripting, you can even emulate a staging area with a specially-formatted commit below the working copy commit.
Re:A Coherent Vision for the Future of Version Control
by llyama on Sunday March 22, 2026 @03:58PM
(#47481469)
You can be messy. The lack of an explicit staging area doesn't restrict that. `jj commit` gives the same mental model for "I want to commit 2 files from the 5 I've changed".
Re:A Coherent Vision for the Future of Version Control
by nchmy on Sunday March 22, 2026 @07:03PM
(#47483259)
You're mistaken. I'm an absolute version control slob. JJ allows me to continue like that yet also collaborate with others. It tracks literally everything so I can not only split, squash, and rebase things to wherever they need to be, but can also rollback/restore/recover anything from either the repo-wide oplog or revision-specific evolog
You really ought to dive in deeper. jjui makes it all vastly simpler
Re:A Coherent Vision for the Future of Version Control
by simonmic on Monday March 23, 2026 @04:55PM
(#47494986)
You can turn off the auto-tracking, and add your files manually.
Re:A Coherent Vision for the Future of Version Control
by yencabulator on Tuesday March 24, 2026 @03:36PM
(#47507897)
https://docs.jj-vcs.dev/latest/config/#paths-to-automaticall...
Or treat the head commit as just a scratch space and the one before it as equivalent to git staged index, and use `jj squash PATH`, `jj squash -i` etc to "stage" things, or directly `jj commit -m "foo" PATHS` (or -i) to make a new commit with just wanted changed. This is what I do.