Skip to content

Port jj cheatsheets from ffi-playground into .cheat/jj - #106

Draft
alycda wants to merge 1 commit into
mainfrom
claude/port-jj-cheat-dotfiles-8gdbsc
Draft

Port jj cheatsheets from ffi-playground into .cheat/jj#106
alycda wants to merge 1 commit into
mainfrom
claude/port-jj-cheat-dotfiles-8gdbsc

Conversation

@alycda

@alycda alycda commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Ports the six jj cheatsheets from alycda/ffi-playground .devcontainer/jj/cheat/jj (at 081444c) into .cheat/jj/ here. Copied verbatim — no edits to content.

Why

They were stranded in a per-project devcontainer, but they answer the questions that come up mid-session in this repo, where jj is the daily driver: "I snapshotted a secret into @, now what?", "how do I fix a commit three deep without losing my place?"

Why .cheat/ and not tools/cheat/cheatsheets/community/jj/

cheat auto-detects a .cheat directory in the cwd and layers it onto the configured cheatpaths. So these are live the moment you're in the dotfiles checkout — no conf.nix change, no home-manager switch, nothing to wire up. It also keeps them honestly scoped: they encode this repo's jj-first workflow rather than claiming to be general community sheets. This is the pattern already documented in tools/cheat/README.md under "Local .cheat directories", and matches the existing top-level .cheat/ sheets (dev, devcontainer, docker/nix, nix/claude).

Contents

sheet covers
branch bookmarks vs branches, and that they don't auto-advance; v0.43's --named replacing --allow-new
edit-history amending a mid-stack commit without moving @; v0.43's rebase -o replacing -d
ignore the .gitignore-then-untrack ordering, and scrubbing a file already captured in earlier commits
log revset recipes — local stack, by file, by date
squash squash --from/--into, absorb, split
undo undo, op log/op restore, evolog

Known overlap, deliberately not resolved here

tools/cheat/cheatsheets/community/jj/ holds five one-line stubs (branches, config, init, log, rebase). Only log collides by name, and the local .cheat copy wins while you're in the repo — so nothing breaks. Consolidating the two sets is left out so this stays a straight port; happy to follow up if you'd rather the community sheets absorb these instead.

Notes

  • No Nix or module changes — .cheat/ needs no wiring, so statix/deadnix/nix flake check are unaffected.
  • jj isn't installed in this sandbox, so this was committed with git per the fallback in CLAUDE.md.

Generated by Claude Code

The jj devcontainer in alycda/ffi-playground accumulated a set of
cheatsheets that answer the questions that actually come up mid-session
("I put a secret in a commit, now what?", "how do I fix a commit three
deep without losing my place?"). They were stranded in a per-project
devcontainer; this repo is where jj is the daily driver, so they belong
here.

Landing them in .cheat/ rather than tools/cheat/cheatsheets/community/:
cheat auto-detects a .cheat directory in the cwd and layers it on top of
the configured cheatpaths, so these are live the moment you're in the
dotfiles checkout, with no conf.nix change and no home-manager switch.
That also keeps them scoped -- they encode this repo's jj-first workflow
rather than claiming to be general community sheets.

Note the overlap with tools/cheat/cheatsheets/community/jj/, which holds
five one-line stubs (branches, config, init, log, rebase). Only `log`
collides by name, and the local .cheat copy wins while you're in the
repo. Consolidating the two sets is deliberately left out of this change
so the port stays a straight copy.

Specific changes:
- .cheat/jj/branch        bookmarks vs branches, and that they don't
                          auto-advance; v0.43's --named replacing
                          --allow-new
- .cheat/jj/edit-history  amending a mid-stack commit without moving @;
                          v0.43's rebase -o replacing -d
- .cheat/jj/ignore        the .gitignore-then-untrack ordering, and
                          scrubbing a file already captured in earlier
                          commits
- .cheat/jj/log           revset recipes (local stack, by file, by date)
- .cheat/jj/squash        squash --from/--into, absorb, split
- .cheat/jj/undo          undo, op log/restore, evolog

Copied verbatim from
https://github.com/alycda/ffi-playground/tree/main/.devcontainer/jj/cheat/jj
(081444c)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01USq6Q2ikzr2d97xwFPGBGc
@github-actions

Copy link
Copy Markdown
Contributor

⊕ Entity-level changes

.cheat/jj/branch

Status Type Name
+ chunk lines 1-17

.cheat/jj/edit-history

Status Type Name
+ chunk lines 1-12

.cheat/jj/ignore

Status Type Name
+ chunk lines 1-15

.cheat/jj/log

Status Type Name
+ chunk lines 1-17

.cheat/jj/squash

Status Type Name
+ chunk lines 1-14

.cheat/jj/undo

Status Type Name
+ chunk lines 1-17

Summary: 6 added across 6 files

functions and classes, not lines · sem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants