SuperAPI AI 工具集

jj-workflow

办公与效率

查看项目

更新于 10-16 01:10

技能介绍

用途:这是一份 Jujutsu(jj)版本控制工作流技能,当 hook 输出显示 vcs=jj-colocated 或 vcs=jj 时加载,用于指导在 jj 仓库中安全、非交互地操作。

核心理念:提交成本低但描述必填,工作副本始终是一个提交,不要留成“(no description set)”;oplog 记录每次变更,jj undo 与 jj op restore 可回退;冲突是提交中的结构化状态而非紧急情况,rebase 即使有冲突也会成功;change ID 在重写后保持不变,适合作为工作的稳定引用;书签主要为 GitHub 推送服务,日常可用匿名变更;保持栈浅、尽早 squash;跨栈修复优先用 absorb。colocated 模式下队友看到的仍是标准 git。

AI 专用规则:必须用 -m 防止打开编辑器,例如 jj new -m "message"、jj describe -m "message"、jj commit -m "message"、jj squash -m "message"。不要使用无非交互模式的 jj split、jj squash -i、jj diffedit。

主要能力与用法:工作副本即提交,无暂存区,编辑自动记录在 @;@- 为父、@-- 为祖父。change ID 稳定,commit ID 随重写变化。用 xyz/n 访问历史版本,如 jj restore --from xyz/1 --to xyz。常用工作流包括 squash 工作流(describe、new、squash)、commit 工作流(jj commit 等于 describe 加 new)、edit 工作流(jj edit 后 jj new,后代自动 rebase)、并行实验(从 main 分别 new,diff 比较,edit 胜者,abandon 败者)。jj absorb 会把 @ 中的修改自动分配到各祖先对应位置。书签需显式移动:jj bookmark set master -r @- 后 jj git push;功能分支用 bookmark create/set。revset 支持 @、@-、x+、x::、::x、trunk()、bookmarks()、empty()、divergent()、description()、author() 等。同步用 jj git fetch 与 jj rebase -d master@origin。

限制与注意:临时禁用不可变提交需用 jj config set --repo 'revset-aliases."immutable_heads()"' 'none()',完成后必须恢复为 builtin_immutable_heads() | remote_bookmarks();重写远程书签意味着强推共享历史,必须先征得用户同意。恢复可用 jj op log、jj undo、jj op restore、jj evolog。退出可 rm -rf .jj,保留 git 不变。推荐配置位于 ~/.config/jj/config.toml。