Dashboard › opencode › Distillation
3d3fe7c1-e0f0-4806-b63e-b541a226bde8["lore_tm_v1_NQCnI_D7J8h0qi_ruqGriL27Lq1eED346U6vO3hIkVM"]
Date: Sep 9, 2026
jj-guide, that Jujutsu operations never fail on merge conflict; conflicts are recorded in commits and must be checked with jj st and resolved manually rather than through interactive jj resolve.jj-guide instruction: if .jj/ exists in the repository root, use jj rather than git for mutations; in colocated .jj/ and .git/ repositories, Git may be used read-only but all mutations must go through jj to preserve the operation log.jj-guide safety rules: never use interactive flags such as -i/--interactive; always pass -m "msg" when describing or committing; verify jj squash, jj abandon, jj rebase, jj restore, and jj commit using jj st and jj log; prefer stable alphabetic change IDs over mutable hexadecimal commit IDs; do not rebase or describe immutable commits; use jj undo, jj op log, or jj op restore <op-id> for recovery.jj-guide mental model: the working copy @ is itself a commit and edits auto-amend it; jj has no staging area; bookmarks resemble Git branches but do not auto-advance; jj commit -m "..." leaves finalized content in @- and creates a new empty @; jj new creates a new empty change and is not equivalent to committing.jj-guide presented two commit workflows: Style A uses jj commit -m "feat: ..." after edits; Style B, recommended for refinement, uses jj describe -m "feat: ..." before editing and leaves @ as the edited change, beginning the next task with jj new.jj-guide rebase/sync workflow: run jj git fetch, then jj rebase -d main@origin to rebase user commits onto the remote main/trunk; fast-forward local main with jj bookmark set main -r main@origin.jj-guide conflict-resolution workflow: after jj rebase, jj new, or jj squash, run jj st; manually edit jj conflict markers, including %%%%%%% diff from:, +++++++, and >>>>>>>; conflict status clears automatically after edits.jj-guide revset distinction: x::y is a DAG range/path, whereas x..y is set difference; they are not interchangeable. Key revsets documented include @, @-, main@origin, trunk(), mine(), empty(), conflicts(), ::x, x::, heads(x), and roots(x).jj-guide specified recovery commands: jj undo reverses the last operation, jj op log shows operation history, jj op restore <op-id> rewinds repository state, and jj workspace update-stale addresses stale working-copy errors.