如何不用切分支也能并行开发:Superpowers 的 Git 工作树指南
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
Superpowers 是一个为编码 Agent 配备开发方法论的开源技能框架,其中的 using-git-worktrees 技能会引导 Agent 用 Git 工作树(git 原生提供的机制,让同一个仓库在不同文件夹里同时检出不同分支)帮你搭好隔离工作区。你不用再在分支之间来回切换,同时推进多个功能的开发者会明显省事。
Git 工作树是什么,能帮你省掉什么
场景是这样的:你正让 Agent 在当前分支上写功能,中途想起另一个分支有个小 bug 要先修。如果直接切分支,未提交的改动会被搁置,Agent 的上下文也要重建;切回来又是一轮重新加载。
工作树给出的思路是:不切换,而是"多开"。每个分支各自占用一个独立目录,互不干扰,两个功能可以同时开发、同时测试。
在 Superpowers 里,这套流程被封装成技能(源码在skills/using-git-worktrees/)。每当你开始一项需要隔离的新功能时,Agent 会自动宣布它正在使用该技能,然后按固定顺序完成检查、创建和初始化,你只需要看结果。
创建隔离工作区前,Agent 先做的两项检查
先检测你是否已处于隔离环境
创建之前,Agent 会先用 git 原生的目录信息判断你当前是否已经在一个工作树里。这一步看起来多余,实际能避开两个坑:一是重复创建,在已有隔离环境里再套一层;二是子模块误判,子模块的目录结构和普通仓库不同,不能直接当成"已经在隔离中"处理。检测通过后才会往下走,如果确认在普通仓库里且没有预设偏好,Agent 会先征求你的同意再动手。
优先使用平台原生工作树工具
如果你的 Agent 平台自带工作树工具(名字类似 EnterWorktree 或 /worktree 的命令),Agent 会优先用它,而不是直接敲git worktree add。原因很实际:原生工具负责目录放置、建分支和清理,整条生命周期平台都看得见;绕过它手工创建,会留下平台无法管理的"幽灵"状态,后续清理容易出问题。git 命令只是没有原生工具时的兜底方案。
防止工作树污染主仓库的安全检查
按优先级选择工作树存放目录
目录不是随手挑的,优先级依次是:你在说明文件里声明过的偏好 > 项目里已存在的.worktrees/或worktrees/目录 > 默认落在项目根目录的.worktrees/。两个目录都存在时用.worktrees/。这样团队里每个人的工作树位置天然一致,不用反复约定。
⚠️ 这里有一道必做的安全检查:工作树目录必须先确认已被 git 忽略,Agent 会执行
git check-ignore -q .worktrees未被忽略的目录会被先补进 .gitignore
如果上面的检查发现目录没有被忽略,Agent 不会带着隐患继续创建,而是先把该目录写进.gitignore并提交这个改动,然后才执行创建:
git worktree add <路径> -b <分支名>这么做是为了防止一个隐蔽的事故:目录没被忽略时,工作树里的整个目录结构可能被当成普通文件提交进主仓库。把"防患于未然"固化成流程,比事后清理要省心得多。
自动识别项目类型并初始化新环境
新工作树检出来只是一份源码,依赖还没装。Agent 会根据项目里的特征文件自动选择初始化命令,而不是让你自己判断:
| 项目类型 | 识别文件 | 自动执行的命令 |
|---|---|---|
| Node.js | package.json | npm install |
| Python | requirements.txt/pyproject.toml | pip install -r或poetry install |
| Rust | Cargo.toml | cargo build |
找不到对应文件就跳过,不会硬装。Go 项目则识别go.mod并执行go mod download。
基线测试确认开发起点是干净的
环境就绪后,Agent 会先完整跑一遍测试套件(npm test、cargo test、pytest等),确认这个分支的起点本身是绿的。✅ 测试通过,它才报告"工作区就绪、可以开始实现";如果有测试失败,它会先报告失败详情并停下来问你:是继续,还是先调查?这避免了"新功能写完之后才发现是旧问题"的扯皮。
功能完成后的收尾:合并、推送或保留
开发结束后的收尾由另一个技能(skills/finishing-a-development-branch/)接管,顺序固定:先跑全量测试,测试不绿就停在这里不给你选菜单;测试通过后才进入下一步。
合并前 Agent 会和你确认基线分支——"这个分支是从 main 分出来的,对吗?"因为合错分支的回撤成本很高。确认后它会给出三个选项:
- 合并回本地基线分支
- 推送并创建 Pull Request
- 先保留分支,稍后自己处理
选完执行对应动作并清理工作树;如果是外部管理的 detached HEAD 工作区,它只会给"推送建 PR"和"保留"两个选项,不会擅自动别人的东西。
安装 Superpowers 并管理你的工作树
安装很简单,先拿到仓库:
git clone https://gitcode.com/GitHub_Trending/su/superpowers之后按你用的平台接入即可:Claude Code 可以直接从官方插件市场安装,Cursor、Codex、OpenCode 等平台在仓库的README.md里都有对应说明。装好后不需要额外操作,技能会自动触发。
🧹 日常只需要一条命令来盘点:git worktree list。定期看一眼,哪些功能已经合并、哪些目录还在占用空间,清掉不再需要的工作树,目录始终干净。
从创建前的检查到收尾的清理,每个环节都有 Agent 按流程盯着,你要做的只是专注写代码本身。
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考