告别频繁切换分支:Superpowers 的 Git 工作树隔离工作区完全指南
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
让 AI 编码助手写代码时,最容易踩的坑是它直接在你当前分支上动手——想并行推进两个需求、或者中途想回滚,都会很被动。Superpowers 用 Git 工作树(worktree)解决这个问题:它的 using-git-worktrees 技能负责创建隔离工作区,finishing-a-development-branch 技能负责收尾和清理。下面是这套机制的决策逻辑和上手方法。
为什么频繁切分支是个负担
让代理开发功能 A、同时还想试功能 B 时,在同一个检出目录里操作通常会遇到三类问题:
- 未提交改动碍事:每次切换都得 stash 再恢复,容易忘、容易丢
- 环境漂移:分支间依赖版本不一致,切完分支得重新装依赖,代理的上下文也跟着乱
- 回滚困难:两个需求的改动混在同一目录,出了问题分不清哪些改动属于谁
工作树让每个分支拥有独立目录和独立的文件环境,但共享同一个 Git 对象库,不需要重新克隆仓库,切换成本只是一次cd。
创建前,Superpowers 怎么决策
三步决策:不重复造轮子
技能不会上来就建目录,而是按顺序判断:
- 先检测:确认是否已处于工作树中,顺带排除子模块造成的误判;已经隔离就直接跳过创建
- 优先原生工具:宿主平台若自带工作树工具(例如
EnterWorktree),就用它;没有才回退到git worktree add - 选目录:用户显式声明的偏好 > 项目里已有的
.worktrees/或worktrees/> 默认新建.worktrees/
目录创建前的自动校验
对放在项目内的目录,它总会先跑一句校验:
git check-ignore -q .worktrees目录没被 .gitignore 忽略的话,它会先补上配置并提交,再开始创建——避免工作树内容被误提交进仓库。
三步搭好隔离开发环境 🌳
- 直接对代理说"我要在隔离环境里开发 feature/auth",技能自动触发,征得你同意后动手
- 创建绑定新分支的工作树,一条命令搞定:
git worktree add .worktrees/feature-auth -b feature/auth- 进入新目录后自动识别项目类型、配置环境,并跑一轮测试确认基线干净
环境配置规则很直白,按项目类型自动执行:
| 项目类型 | 识别文件 | 自动执行 |
|---|---|---|
| Node.js | package.json | npm install |
| Rust | Cargo.toml | cargo build |
| Python | requirements.txt/pyproject.toml | pip install/poetry install |
| Go | go.mod | go mod download |
基线测试失败时,代理不会硬闯:它会报告失败项并询问你是否继续,避免把既有问题带进新开发。
分支收尾:一个三选项菜单 🧹
收尾阶段的原则是:测试全绿才出现菜单,有失败就先修,不进入后续决策。菜单固定三个选项:
- 本地合并:先跟你确认这个分支从哪个基分支分出(合错基分支回滚成本很高),合并后再对合并结果跑一次测试,绿灯才移除工作树并删除分支
- 推送并建 PR:推远端后创建 Pull Request,工作树保留,方便在评审反馈时继续改
- 保持原样:什么都不动,留待你之后处理
两条边界规则值得记住:只有位于.worktrees/或worktrees/下、由它自己创建的工作树才会被清理,宿主环境自己的工作树一律不碰;丢弃工作必须你明确输入discard确认,代理不会自作主张。
容易踩的几个坑与规避办法 ⚠️
| 场景 | 容易犯的错 | Superpowers 的处理 |
|---|---|---|
| 目录未被 gitignore | 工作树整树被误提交 | 自动校验并补写 .gitignore |
| 已在某个工作树里 | 重复创建、目录嵌套 | 第 0 步检测,直接跳过 |
| 基线测试失败 | 在脏基线上继续开发,后续失败难归因 | 先报告,等你决定再继续 |
| 推送被拒绝 | 下意识 force push | 仅在你明确指示时才强推 |
| detached HEAD 状态 | 误选"本地合并" | 只给 PR 或保留两个选项 |
想亲手体验的话,克隆仓库后按 README 把 Superpowers 装到你的编码助手里,再在任意项目里说一句"为这个功能建一个隔离工作区"即可开始:
git clone https://gitcode.com/GitHub_Trending/su/superpowers【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考