Hacker News new | ask | show | jobs
by renerick 439 days ago
It's really not that long. Once you figure out that

1. jj operates on revisions. Changes to revisions are tracked automatically whenever you run jj CLI

2. revisions are mutable and created before starting working on a change (unlike immutable commits, created after you are done)

3. you are not working on a "working directory" that has to be "commited", you are just editing the latest revision

everything just clicks and feels very natural and gets out of the way. Want to create a new revision, whether it's merge, a new branch, or even insert a revision between some other revisions? That's jj new. Want to move/reorder revisions? That's jj rebase. Want to squash or split revisions? That's jj squash and jj split respectively. A much more user-friendly conflict resolution workflow is a really nice bonus (although, given that jj does rebasing automatically, it's more of a requirement)

One notably different workflow difference, is absence of branches in the git sense and getting used to mainly referring individual revisions, but after understanding things above, such workflow makes perfect sense.