SuperAPI AI 工具集

jujutsu

编程与开发

查看项目

更新于 10-16 01:24

技能介绍

Jujutsu(jj)是与 Git 兼容的版本控制系统技能,核心特点是可变提交、自动变基、无暂存区。已用 jj v0.37.0 测试,其他版本命令可能有差异。

用途:在 agent/自动化环境中执行版本控制操作,如提交、查看状态、分支(bookmark)、推送、变基、还原、工作区管理等。

主要能力:工作副本本身即提交(@),运行任何 jj 命令会自动快照,无需 jj commit;提交可自由修改描述、压缩、变基、吸收;提供 change ID(重写后稳定)与 commit ID(内容哈希);用 revset 语言选择提交,如 @、@-、trunk()..@、bookmarks()。

必要用法:agent 环境务必用 --no-pager 避免交互分页挂起,如 jj --no-pager log、jj --no-pager diff、jj --no-pager show <id>;用 -m 内联消息避免编辑器提示,如 jj desc -m "message"、jj squash -m "message"。变更后用 jj st 验证。推荐先 jj desc -m "..." 再写代码;每个提交只做一个逻辑变更。查看差异建议用 jj diff --git 获取标准 +/- 格式。常用操作:jj new、jj edit <change-id>、jj squash、jj absorb、jj abandon、jj undo、jj rebase -d <destination>、jj restore、jj bookmark create/move/list/delete、jj git clone、jj git init --colocate、jj git fetch、jj git push -b <bookmark-name>。工作区:jj workspace add、jj --no-pager workspace list、jj workspace forget、jj workspace update-stale。

适用场景:需要 agent 在 Git 中辅助提交、整理历史、变基、推送或使用多工作区并行构建/测试时。

限制:jj squash -i、jj split、jj resolve 是交互式的,会在 agent 环境挂起;冲突需直接编辑文件去除冲突标记后用 jj st 验证;非 colocate 仓库不要用 git 命令,否则会破坏 jj 状态;co-located 仓库中切换 git 前必须确保工作已提交,且 jj bookmark 不会像 git 分支一样自动前进,推送前需手动更新。工作区共享 @ 易导致陈旧与分歧,除非都只读,否则不要 jj edit 其他工作区已占用的变更;删除工作区目录前先执行 jj workspace forget。若另一工作区重写了本工作区 @,需运行 jj workspace update-stale 恢复。其他更高级用法资料未提供,建议查阅官方文档。