Git Worktrees 并行开发:Superpowers 用三个机制自动搭好隔离工作区
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
同时赶两个需求、手上还压着一个线上 bug,最怕的就是切分支。Superpowers 基于 Git Worktrees 做了一套并行开发分支管理流程:每个功能分支一个独立工作目录,多分支同时开发互不干扰,目录、依赖、测试全自动化。
一个仓库开三份活,为什么值得
传统做法是一个仓库对应一个工作目录,切分支就是同一棵树换一块内容:没提交的东西要 stash,换完分支依赖可能得重装,两个功能碰同一份依赖版本时干脆互相卡死。
git worktree 是 Git 的原生能力:多个工作目录共享同一个 .git,每个目录钉在一个分支上,文件层面完全隔离。落到分支管理上意味着——三个功能各占一个目录,切换靠切终端,分支状态不再靠脑子记。
Superpowers 的 skills/using-git-worktrees 技能把"建 worktree"从一串手工命令变成了固定流程:先检测、再创建、装依赖、验证基线,全过才把工作区交给你。
三道自动闸门,堵住最常翻车的点
忘了写 gitignore?先查再建,缺了自动补
用 worktree 的第一个常见事故:工作目录没进 .gitignore,结果整棵工作树的内容被 git 跟踪,等人发现时 git status 已经满屏 .worktrees。技能在创建前会先执行 git check-ignore 验证,目录没被忽略就先写进 .gitignore 并提交,再进入创建步骤。这意味着:这类事故不用再靠事后翻 git log 排查,仓库状态从头到尾是干净的。
工作目录放哪?三条优先级,不用你拍板
目录位置最容易出现"这次建这儿、下次建那儿"的混乱。它的规则按优先级排:一、你在 CLAUDE.md 等说明文件里明确写过的 worktree 目录偏好,直接照办;二、项目里已存在的 .worktrees 或 worktrees 目录,两者都有时优先 .worktrees;三、都没有就默认放项目根的 .worktrees/。这意味着:每开一个新分支不用再问"这目录建哪儿",同一项目的多个工作区永远长在一个地方。
创建前还有一步容易漏的预检:对比 git rev-parse --git-dir 和 --git-common-dir,如果已经身处某个关联工作树,直接复用,绝不在工作树里再套一层;子模块造成的"看起来像 worktree"的假象也会被排除。这意味着:哪怕流程由 AI 无人值守地跑,也不会出现 worktree 套 worktree 或者把子模块误当成工作区。
开工前先确认没在带病起跑
工作区建好之后,它会按项目类型自动装依赖:有 package.json 跑 npm install,有 Cargo.toml 跑 cargo build,有 requirements.txt 或 pyproject.toml 走 pip 或 poetry,有 go.mod 跑 go mod download。随后跑一遍完整测试套件作为"基线"——基线红了就列失败清单并问你是否继续,不会闷头开工。这意味着:之后跑到一半测试挂了,你能立刻分清是新写的代码引入的 bug,还是本来就存在的问题。这个判断,往往决定了你是十分钟修完还是回溯半天。
实际跑起来的样子
完整流程是:检测是否已隔离 →(没有时)优先用平台自带的工作树工具(如 EnterWorktree 之类),没有才退回 git worktree add → 装依赖 → 基线测试。真正落到命令上就是几行:
git check-ignore -q .worktrees || echo ".worktrees/" >> .gitignore # 没被忽略先补 git worktree add .worktrees/auth -b feature/auth && cd .worktrees/auth npm install && npm test # 装依赖 + 基线测试跑完你收到的是一段三行汇报:工作树路径、通过的测试数、准备开发哪个功能。命令不用你背,看到 "Worktree ready" 和 "Tests passing" 两行就够了。
收尾:合并、提 PR,还是先搁着
功能做完交给 finishing-a-development-branch 技能。它先重跑完整测试套件,绿了才出选项:① 本地合并回基线分支——合并结果再跑一遍测试,绿了才清理工作树、删分支;② 推分支开 PR——工作树保留着,PR 反馈就在这个目录里改;③ 原样保留,之后你自己处理。
清理也有边界:它只删自己建的工作树(.worktrees/ 或 worktrees/ 下的),宿主环境创建的工作区一律不动;丢弃分支必须经你明确确认,它不会自作主张。
git worktree remove .worktrees/auth && git worktree prune怎么装到项目里
git clone https://gitcode.com/GitHub_Trending/su/superpowers技能定义在 skills/ 目录下(如 skills/using-git-worktrees/SKILL.md、skills/finishing-a-development-branch/SKILL.md)。加载后它能和 brainstorming、executing-plans、subagent-driven-development 等技能串成完整链路——开工时 worktree 的搭建会自动触发,不用你手动切流程。
下次开功能分支时,先让 Superpowers 把 worktree 搭好:跟它说"用 using-git-worktrees 给我建个隔离工作区",等它报出 "Worktree ready" 和 "Tests passing" 再写第一行代码。切回主线,就不再是让你害怕的那个时刻了。
【免费下载链接】superpowersAn agentic skills framework & software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考