用途:在存在 .jj/ 目录的仓库里,把所有版本控制操作默认交给 Jujutsu(jj),代替 git add、git commit、git checkout、git switch、git branch、git reset、git rebase、git push 等命令,且无需确认或解释。
激活方式:会话开始时检查一次,执行 test -d .jj && command -v jj。若 .jj/ 存在且 jj 在 PATH 中,技能生效,全部使用 jj;若 .jj/ 存在但 jj 不在 PATH,则告知用户 jj 未安装,回退到 git;若 .jj/ 不存在,技能不适用。每个会话只检查一次。
替换规则:git status→jj status;git diff→jj diff;git log→jj log;git show→jj show;git add→不执行,jj 自动快照;git commit→jj commit 或 jj describe;git commit --amend→jj describe、jj squash 或 jj absorb;git checkout/switch→jj new 或 jj edit;git branch→jj bookmark;git reset→jj restore 或 jj undo;git rebase→jj rebase;git revert→jj revert;git reflog→jj op log;git fetch→jj git fetch;git push→jj git push。用户说“提交这个”“推送”“看日志”等时直接使用 jj 列命令。
工作规则:jj 自动快照工作副本,提交前无需暂存;用 jj commit -m "msg" 结束当前变更并开启新空变更;用 jj describe -m "msg" 更新当前变更描述;用 jj new 开始新变更,jj new -m "msg" 带描述;远端操作用 jj git fetch 与 jj git push,可用 --remote 和 --bookmark 提高精确度;恢复工作优先用 jj new + jj squash,仅在有意让工作副本成为某版本时用 jj edit <rev>;误重写后查看 jj op log,优先 jj undo。
何时可用原始 git:仅当 jj 不提供的能力,如需要直接访问 .git 的外部工具、jj 尚未实现的 Git 特性;此时需向用户说明为何用 git。
与用户沟通:不解释正在用 jj 代替 git;若 jj 概念可能让用户困惑,用一句话说明,例如用 jj new 从某版本开始工作;jj 命令失败要说明错误和下一步;回退到原始 git 时需说明。
推荐模式:jj status、jj diff --summary、jj log -r ::、jj describe -m "..."、jj commit -m "..."、jj new -m "..."、jj bookmark set my-feature -r @、jj git fetch --remote origin、jj git push --remote origin --bookmark my-feature。完整对照表见 references/git-to-jj.md;初始化 git 仓库为 Jujutsu 或查看/更新 jj 配置使用配套技能 $jj-init。