2.2 KiB
2.2 KiB
Nonlinear Work
This skill supports sibling commits and unrelated work. Do not force everything onto the current stack if the work is logically independent.
Tested with jj 0.41.0
When to Start a Sibling from trunk()
Use a fresh sibling when:
@already represents one logical change and the new work is unrelated- the user wants multiple independent lines of work
- you need to compare or merge two alternative implementations
- a quick fix appears while a feature change is already in progress
Preferred Flow
This skill keeps the local "describe first" rule, even for sibling work:
jj st
jj new trunk()
jj desc -m "fix: handle stale workspace recovery"
# make changes
jj st
Use trunk() instead of guessing main or master. If the new work should build on the current change, use plain jj new instead of jj new trunk().
Child vs Sibling
Use a child (jj new) when:
- the new work depends on the current change
- the user wants a stacked sequence
- the current commit is intentionally being split into follow-up commits
Use a sibling from trunk() when:
- the work should review, land, or be abandoned independently
- you are branching off to do an unrelated fix, doc change, or experiment
- parallel agents need clearly separated lines of history
Merge-Shaped Work
If two independently meaningful lines of work should remain visible as a merge, create an explicit merge commit:
jj new <left-change> <right-change> -m "merge: combine related lines of work"
Ask the user before choosing between:
- rebasing one line onto the other
- keeping a visible merge
- pushing each line separately
Anti-Patterns
- Do not keep piling unrelated work into the current
@just because it is convenient. - Do not adopt a
describe -> code -> jj new -> repeatloop. In this skill,jj newstarts the next change; it does not close the current one. - Do not default to
jj new trunk() --no-edit -m ...here. Keep the local sequence: choose the base first, then runjj desc -m .... - Do not hardcode
mainormasterwhentrunk()expresses the intent.
See references/NEW_CHANGE.md for the default change-starting workflow and references/WORKSPACES.md for multi-workspace parallelism.