by Human-Cabbage | 2025-08-31 20:44:06+00:00
To reinforce the sibling reply with a concrete example:

Let's say you've got a few feature branches, all based of the trunk branch.

$ jj @ ozywpwxm samfredrickson@gmail.com 2025-08-31 13:21:59 b2f1364d │ (empty) (no description set) │ ○ qxoklwxv samfredrickson@gmail.com 2025-08-31 13:21:27 9cda0936 ├─╯ (empty) Feature C │ ○ ukqynvts samfredrickson@gmail.com 2025-08-31 13:21:26 ceee7029 ├─╯ (empty) Feature B │ ○ nwtxnvxp samfredrickson@gmail.com 2025-08-31 13:21:24 9ccbedf6 ├─╯ (empty) Feature A ◆ yxuvtolz samfredrickson@gmail.com 2025-08-27 09:49:16 master git_head() 8e80b150 │ Update Claude Code to 1.0.93.

One neat workflow supported by Jujutsu is "working on all branches at the same time."

$ jj new q u n Working copy (@) now at: zzxxqlzr fb73d4dc (empty) (no description set) Parent commit (@-) : qxoklwxv 9cda0936 (empty) Feature C Parent commit (@-) : ukqynvts ceee7029 (empty) Feature B Parent commit (@-) : nwtxnvxp 9ccbedf6 (empty) Feature A $ jj @ rzouzmyw samfredrickson@gmail.com 2025-08-31 13:25:56 fb73d4dc ├─┬─╮ (empty) (no description set) │ │ ○ nwtxnvxp samfredrickson@gmail.com 2025-08-31 13:21:24 9ccbedf6 │ │ │ (empty) Feature A │ ○ │ ukqynvts samfredrickson@gmail.com 2025-08-31 13:21:26 ceee7029 │ ├─╯ (empty) Feature B ○ │ qxoklwxv samfredrickson@gmail.com 2025-08-31 13:21:27 git_head() 9cda0936 ├─╯ (empty) Feature C ◆ yxuvtolz samfredrickson@gmail.com 2025-08-27 09:49:16 master 8e80b150 │ Update Claude Code to 1.0.93. ~

Now you can use the merge revision as a scratch space, and then squash changes from it into one of the feature revisions.

$ vim README.md $ jj squash --into n Working copy (@) now at: rzouzmyw 30ff9b0f (empty) (no description set) Parent commit (@-) : qxoklwxv 9cda0936 (empty) Feature C Parent commit (@-) : ukqynvts ceee7029 (empty) Feature B Parent commit (@-) : nwtxnvxp fb3cca28 Feature A $ jj @ rzouzmyw samfredrickson@gmail.com 2025-08-31 13:27:41 30ff9b0f ├─┬─╮ (empty) (no description set) │ │ ○ nwtxnvxp samfredrickson@gmail.com 2025-08-31 13:27:41 fb3cca28 │ │ │ Feature A │ ○ │ ukqynvts samfredrickson@gmail.com 2025-08-31 13:21:26 ceee7029 │ ├─╯ (empty) Feature B ○ │ qxoklwxv samfredrickson@gmail.com 2025-08-31 13:21:27 git_head() 9cda0936 ├─╯ (empty) Feature C ◆ yxuvtolz samfredrickson@gmail.com 2025-08-27 09:49:16 master 8e80b150 │ Update Claude Code to 1.0.93.

Later, you decide to fetch changes from your remote, and notice that your revisions are based on an out-of-date version of the trunk.

$ jj git fetch remote: Enumerating objects: 17, done. remote: Total 12 (delta 6), reused 0 (delta 0), pack-reused 0 bookmark: master@origin [updated] tracked $ jj @ rzouzmyw samfredrickson@gmail.com 2025-08-31 13:27:41 30ff9b0f ├─┬─╮ (empty) (no description set) │ │ ○ nwtxnvxp samfredrickson@gmail.com 2025-08-31 13:27:41 fb3cca28 │ │ │ Feature A │ ○ │ ukqynvts samfredrickson@gmail.com 2025-08-31 13:21:26 ceee7029 │ ├─╯ (empty) Feature B ○ │ qxoklwxv samfredrickson@gmail.com 2025-08-31 13:21:27 git_head() 9cda0936 ├─╯ (empty) Feature C │ ◆ zvpmmzru samfredrickson@gmail.com 2025-08-29 15:59:55 master 658a3d12 │ │ Update Claude Code to 1.0.98. │ ~ (elided revisions) ├─╯ ◆ yxuvtolz samfredrickson@gmail.com 2025-08-27 09:49:16 8e80b150 │ Update Claude Code to 1.0.93. ~

With Jujutsu, you can run one command to rebase _everything_ against the latest trunk revision.

$ jj rebase -s 'roots(trunk()..mutable())' -d 'trunk()' Rebased 4 commits to destination Working copy (@) now at: rzouzmyw 88ed8085 (empty) (no description set) Parent commit (@-) : qxoklwxv 005442c3 (empty) Feature C Parent commit (@-) : ukqynvts 23923cf2 (empty) Feature B Parent commit (@-) : nwtxnvxp 769d0539 Feature A Added 0 files, modified 2 files, removed 0 files $ jj @ rzouzmyw samfredrickson@gmail.com 2025-08-31 13:32:08 88ed8085 ├─┬─╮ (empty) (no description set) │ │ ○ nwtxnvxp samfredrickson@gmail.com 2025-08-31 13:32:08 769d0539 │ │ │ Feature A │ ○ │ ukqynvts samfredrickson@gmail.com 2025-08-31 13:32:08 23923cf2 │ ├─╯ (empty) Feature B ○ │ qxoklwxv samfredrickson@gmail.com 2025-08-31 13:32:08 git_head() 005442c3 ├─╯ (empty) Feature C ◆ zvpmmzru samfredrickson@gmail.com 2025-08-29 15:59:55 master 658a3d12 │ Update Claude Code to 1.0.98. ~

I use this command so much that it's aliased as "jjsr", "Jujutsu Super Rebase".