多分支并行开发不用来回切换:用 Superpowers Git Worktrees 三步建好隔离工作空间
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
多个功能分支来回切换,是日常开发里最容易被低估的时间开销。这篇文章以 Superpowers 项目的 using-git-worktrees 技能为主线,讲清楚如何用 Git Worktrees 做多分支并行开发与分支管理:工作目录怎么选、.gitignore 怎么自查、基线测试为什么要先跑,以及收工之后 worktree 如何清理。
切分支的隐性成本
你可能遇到过这种情况:从功能 A 切到功能 B,依赖要重装、构建缓存要重新生成,上下文断了半个小时。更隐蔽的开销是两个分支的产物互相干扰,测试挂了,你甚至分不清是不是自己刚改出来的。传统分支管理把这些成本绑定在每一次切换上。
Git Worktrees 是 Git 原生的解法:一个仓库挂多个工作目录,每个目录绑定一个分支。你在 .worktrees/auth 里做 A,同时在 .worktrees/fix-login 里修 B,两边互不干扰。但裸的 git worktree add 只给你一个空目录,依赖不会装,忽略规则不检查,测试也不跑。Superpowers worktrees 技能补的就是这段空缺。
技能做了什么
技能定义在 skills/using-git-worktrees/SKILL.md。它做的事情是把一串手动操作固化成固定流程:定位目录、检查忽略状态、创建 worktree、安装依赖、跑基线测试、输出结果。你只需要决定分支叫什么名字,其余交给它。
它没有发明新机制,解决的是"每次操作凭记忆,每次都会漏一步"的问题。
目录选择优先级与 .gitignore 自查
第一个决策是工作目录放哪。技能按固定优先级处理:
| 顺序 | 条件 | 行为 |
|---|---|---|
| 1 | .worktrees 已存在 | 直接复用 |
| 2 | worktrees 已存在 | 直接复用 |
| 3 | 都不存在,但 CLAUDE.md 声明了偏好 | 按配置走 |
| 4 | 以上都没有 | 直接问你 |
两个目录都存在时,优先隐藏目录 .worktrees。原因不复杂:隐藏目录更容易被构建工具和其他流程绕开。
第二个决策更关键。worktree 目录没写进 .gitignore,主工作树一看就是满屏 git status 噪音,提交也会被污染。技能不会让你凭印象判断,它会实际执行:
git check-ignore -q .worktrees没被忽略时,自动把目录追加进 .gitignore 并提交。这一步不起眼,却是 worktree 事故里出现频率最高的一环。
三步建好隔离工作空间
目录定了,真正下场的命令没几条:
git worktree add .worktrees/auth -b feature/auth cd .worktrees/auth创建之后,技能按项目里的标记文件自行安装依赖。package.json 触发 npm install,Cargo.toml 触发 cargo build,Python 项目走 requirements.txt 或 pyproject.toml,Go 项目执行 go mod download。一个标记文件都没有时,这一步直接跳过。你不需要背各技术栈的装依赖命令。
接着跑一轮完整测试,npm test、cargo test、pytest、go test ./...,把当前状态记下来。完成后你会收到固定的三行报告:先是 Worktree ready at /path/to/repo/.worktrees/auth,接着是 Tests passing (47 tests, 0 failures),最后是 Ready to implement auth feature。三行齐了,工作空间才算就绪。
基线测试为什么要先跑
基线的价值在于对比。不做基线,写完代码遇到红测试,你说不清是新引入的 bug 还是历史遗留。技能的处理方式很直接:基线红了,把失败项报出来,问你要不要继续,由你拍板,不默默往下走。基线是绿的,此后任何红测试都默认归因于你,排查路径清晰很多。
收尾与踩坑提醒
功能做完,worktree 要清理。Superpowers 提供 finishing-a-development-branch 技能做收尾,worktree 层面只需要两条命令:
git worktree list git worktree remove .worktrees/auth先确认分支落在哪个工作目录,再删除目录。删目录不动分支和提交,两件事别混。
跑这套流程时,有四件事值得记住:
- 别跳过 check-ignore 这一步,它是绝大多数 worktree 事故的来源。
- 别自己拍目录位置,按优先级表走,项目结构才不会发散。
- 基线红了别硬闯,先让用户决定是否继续。
- 别手写安装命令,让技能从标记文件判断,换技术栈也不会挂。
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考