给每个功能一个隔离工作区
给每个功能一个隔离工作区
superpowers 核心技能 · using-git-worktrees
一句话: 别让 AI 在你正用的工作区里大改. 给它开个独立的 git worktree, 改坏了也不碰你的主目录.
场景: 新功能做一半, 线上突然炸了
你正让 AI 做"会员积分"功能, 改了一堆文件还没提交. 这时线上报警: 支付页打不开, 要紧急修. 在同一个工作区里切分支? 你那堆没提交的积分改动会和热修搅在一起, git status 一团糟, 还可能互相带坏.
怎么对 AI 说
线上有紧急 bug 要修, 但我手头积分功能还没做完. 用 using-git-worktrees 给这个热修
单开一个隔离 worktree: 确认目录被 gitignore, 装好依赖, 跑通基线测试. 我在那儿专心修, 不动现在这堆改动.
| ❌ 差的说法 | ✅ 好的说法 |
|---|---|
| 先 stash 一下再切分支修 | 开个独立 worktree 修, 积分这边原封不动 |
| worktree 随便放哪 | 放 .worktrees/, 先确认它被 gitignore 了 |
| (基线测试就挂着)直接修 | 基线先跑通, 不然分不清是热修引入还是旧问题 |
一次性在 CLAUDE.md 写明 worktree 目录偏好, 省得每次问放哪.
它会怎么跟你走
它按优先级选目录(已有的 .worktrees/ > CLAUDE.md 约定 > 问你), 用 git check-ignore 确认目录被忽略(没忽略先补 .gitignore, 否则 worktree 内容会被误提交). 然后建 worktree, 装依赖, 跑基线测试确认干净, 报"路径 + 测试通过数 + 可以开工". 你在这个干净沙盒里专心修支付 bug, 主工作区那堆积分改动一动没动; 修完合并, 用 git worktree remove 清理.
一句话记住
using-git-worktrees = 让 AI 在隔离沙盒里干活. 手头活没干完又来急活时尤其有用: 各开各的 worktree, 互不污染; 清理用 git worktree remove 别 rm.