LazyJJ provides a complete stack-based workflow for managing commits.
What is a Stack?
A “stack” is a series of commits from where you diverged from trunk to your current position. This model is perfect for:
Feature development with multiple logical commits
Stacked pull requests
Code review workflows
Why Stacks Work Better in JJ
Unlike Git or Graphite, stacks are native to JJ’s model:
Git: Branches fight the stacking workflow. Rebasing is manual and error-prone. You constantly juggle branch names and worry about detached HEAD states.
Graphite: Stacks are metadata layered on top of Git. Break the discipline (one commit per branch), and the stack breaks. The “stack” is actually a queue fighting Git’s branch model.
JJ: Stacks are the natural structure of the commit graph. Edit any commit, descendants automatically rebase. Change IDs provide stable handles. It’s how JJ works, not a layer on top.