📚 工程方法 全难度 📦 Obra

using-git-worktrees

设计批准后创建隔离工作区,保持主线干净。

8.6 /10 ★★★★☆
📅 2026-06-15 · 🕒 4 分钟阅读 · 最后更新 2026-06-15 · 来源: Obra · 分析测评
#superpowers#git-worktree#isolation#parallel-dev#multi-worktree
📄 相关文章

📊 评分明细

功能完备度
8.6 核心功能齐全
🎯 易用性
8.3 安装即用
🔧 可扩展性
8.4 声明式配置
🔗 生态协同
8.5 可链式调用
🛡️ 稳定性
9.2 CI 集成验证

🎯 适用场景

superpowersgit-worktreeisolationparallel-devmulti-worktree

using-git-worktrees 快速入门

用 Git Worktree 给 AI 编程开”独立工位”,主线代码再也不会被半成品污染。

这是什么?解决什么问题?

using-git-worktrees 是 Obra 团队(superpowers 套件)中专门处理”工作区隔离”的工作流 Skill,核心载体是 Git 2.5+ 引入的 git worktree 命令。它要解决的是这样一个具体场景:你刚让 AI 在主分支上做了一个大功能,改到一半发现有几个实验性想法想并行验证,或是要切出去修一个紧急 bug——但当前的 working directory 里堆满了未提交的半成品,你想”保存现场”又不想 commit 一堆脏数据。

这个 Skill 提供的核心思路是:当设计阶段获得批准(通常由 brainstorming 或 writing-plans Skill 完成)后,先建一个 worktree 隔离工作区,在那个 worktree 里跑后续所有改动(写代码、跑测试、AI 子代理派遣、code review)。主 worktree(通常是主分支)始终保持”基线干净”,任何半成品、实验性 commit、AI 误操作,统统被关在子 worktree 里,随时可以删除而不影响主线。

它归属于 obra/superpowers 套件,定位”工程方法”类。Obra 在 GitHub 上的 superpowers 仓库 40k+ Stars、MIT 协议,被很多 Claude Code 用户视为”AI 软件工程流程”的标杆实现。using-git-worktrees 在工作流上常排在 brainstorming → writing-plans → using-git-worktrees → test-driven-development 之后,起”开始动手前的最后一道隔离闸门”作用。

准备工作

  1. Git 2.5 或更高版本:git worktree 自 2015 年 7 月发布的 Git 2.5 引入,2026 年的 Git 客户端(2.40+)支持完善。可用 git --version 确认。
  2. 一个干净的 Git 仓库:在项目根目录执行 git status 应该是 no changes。如果有未提交改动,先 commit 或 stash,否则建 worktree 时 Git 会拒绝。
  3. 分支命名规范:推荐 feature/<ticket>-<short-desc>wt/<topic> 这样的形式,方便后续管理。
  4. Claude Code 或兼容 Agent:本 Skill 由 Agent 主动调度,需要 Agent 能执行 shell 命令。
  5. 设计已被批准:按照 Obra 的整体工作流,使用本 Skill 之前应已经过 brainstorming,产出过设计文档,否则容易”先建 worktree 再改需求”。

3 步快速上手

第 1 步:安装 Skill

克隆 obra/superpowers 仓库,定位到 skills/using-git-worktrees/ 目录。

git clone https://github.com/obra/superpowers.git ~/superpowers
mkdir -p ~/.claude/skills
ln -s ~/superpowers/skills/using-git-worktrees ~/.claude/skills/using-git-worktrees

软链接的目的是让 Claude Code 启动时自动扫描并加载 SKILL.md。

第 2 步:验证安装

打开你的项目仓库,启动 Claude Code 后输入:

用 using-git-worktrees Skill 给我讲讲它的核心使用规则。

Agent 会回读 SKILL.md,告诉你”什么时候该建 worktree、什么时候不该建”,以及命名规范。你也可以在 shell 里直接验证命令:

git worktree list

正常应该输出当前仓库所有 worktree,至少有 1 个主 worktree 指向当前 checkout 的分支。

第 3 步:用 Skill 跑第一个任务

假设你要在当前项目里新增一个”用户头像上传”功能,设计已批准(走完 brainstorming 阶段)。在 Claude Code 对话框中输入:

请用 using-git-worktrees 流程,为”用户头像上传”功能建一个 worktree,并把后续所有改动限制在那个 worktree 里。

Agent 会按 SKILL.md 自动执行类似如下 shell 步骤:

git worktree add ../myproject-avatars -b feature/avatars main
cd ../myproject-avatars

接下来所有”装依赖、写代码、跑测试、派遣子代理”都发生在 ../myproject-avatars 目录下,与主 worktree 互不干扰。完成后用:

git worktree remove ../myproject-avatars

即可一键清理,主分支的 git log 不会有任何脏 commit。

常见踩坑

  1. 在主 worktree 上直接动手:违反 Skill 的”先建 worktree 再改”原则,半成品会污染主分支。养成”任何非 trivial 改动都先开 worktree”的肌肉记忆。
  2. worktree 路径选错:放在项目内部(如 myrepo/.worktrees/avatars)容易让编辑器或构建工具误扫描到,推荐放在项目同级目录,如 ../myrepo-avatars
  3. 忘记基线验证:建 worktree 前不跑测试,导致”在错误的基线上开发”,最后合并时一堆冲突,排查困难。建完先跑一次 npm test / pytest 确认基线绿。
  4. worktree 长期堆积:git worktree list 一长串没人清理,占用磁盘。可定期 git worktree prune 清理无效条目。
  5. 跨 worktree 共用未跟踪文件:.env、IDE 配置、node_modules 这类常被 .gitignore 忽略,新 worktree 不会自动带过去,需要手动复制或用符号链接。
  6. 在同一 worktree 跑多个并行任务:一个 worktree 一个分支一个任务,不要在同一个 worktree 里同时改两个不相关的功能,合并时再分也来不及。

初级用法

  • 新功能开发:每次接到新需求,先 git worktree add ../proj-feat-x -b feature/x main,在那个目录里改完、跑通测试,再开 PR。
  • 紧急 hotfix:在主 worktree 跑 git worktree add ../proj-hotfix main 直接基于主干建独立 hotfix 目录,修复后 merge 回 main,不影响当前进行中的 feature worktree。
  • AI 实验性改动:让 AI 在临时 worktree 里”先试试”,试坏了直接 git worktree remove 删掉,主分支毫发无损。

高级玩法

  • 与 subagent-driven-development 串联:在子 worktree 里再启动 subagent-driven-development 调度,实现”工作区隔离 + 任务隔离”双层保险。
  • Worktree 池化:为常用场景(如 wt-reviewwt-experiment)预建 worktree,需要时直接 cd 进去,避免每次手动 add。
  • CI 配合:在 worktree 里跑 CI 任务(如 act 本地跑 GitHub Actions),多个 worktree 互不干扰,可以同时验证多套方案。
  • 脚本化命名规范:把”建 worktree”封装成内部脚本,自动从分支名解析 ticket、jira 链接,统一团队实践。

小技巧

  1. 给 worktree 起带 ticket 号的目录名(如 myrepo-PROJ-1234),ls 一眼看到这是哪个任务的工位。
  2. 在 worktree 根目录放一个 .worktree-marker 空文件,编辑器打开时一眼分辨”现在在 worktree 里还是主目录里”。
  3. 配合 git worktree list --porcelain 写监控脚本,定期清理长期无 commit 的”僵尸” worktree。
  4. 合并 PR 后立即 git worktree remove,不要等到下次想起来,容易忘记分支已经被删除导致 prune 失败。
  5. .gitignore 里把 .worktrees/ 加入(如果走同目录子目录模式),避免 IDE/构建工具误索引。

参考链接

写在最后:worktree 不是银弹

using-git-worktrees 是一个”用流程换安全感”的工作流 Skill,它不能替你做设计、不能替你写测试、也不能替你 review。它能给你的,是”当 AI 写崩了、或者你中途改主意了,有一个一键丢弃的沙箱”——这正是它最朴素也最有价值的地方。对于刚接触 superpowers 套件的团队,建议先在一个低风险项目上完整跑一遍”建 worktree → 改代码 → 跑测试 → 合并 → 清理 worktree”的闭环,把这条流水线固化成团队习惯,再把它推广到核心项目。

实际生产里,worktree 经常和”主干保护分支(branch protection)+ 强制 PR 评审”联用:主分支锁死,所有改动必须从 worktree 提 PR,合并后立刻清理 worktree,这样即使有 AI 写崩的中间产物,也只影响 PR 自身,主分支永远处于可发布状态。

本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。

using-git-worktrees Skill 多维度简评

综合评分:8.6 / 10 ⭐⭐⭐⭐⭐ 类别:Git / 工作流 / 并行开发 仓库:obra/superpowers 维护者:Jesse Vincent / Prime Radiant 引用:Superpowers README · CSDN 详解 · 掘金原理


一、核心定位与价值

Git worktree 是**“用多个工作区并行开发”**的官方解决方案。using-git-worktrees Skill 强制”开始新功能前先开 worktree”,避免主分支被污染 + 支持并行任务 + 易于回滚

核心原则:“开始需要与当前工作区隔离的功能工作,或执行实施计划前” 目录选择优先级:.worktrees/ → 项目内其他目录 → 询问人类 安全:验证 .worktrees/.gitignore 中,避免 worktree 内容被 commit

适用场景

  • 开始新功能开发
  • 多分支并行开发
  • 实验性改动(不确定要不要保留)
  • 实施一个完整 plan
  • 不污染主工作区

不适用场景

  • 1 行修改
  • 已经有一个 worktree
  • 主工作区是干净的,直接用 main

二、核心机制

2.1 什么是 Git Worktree

Git worktree 允许同一个 git 仓库有多个工作目录:

  • 主 worktree:~/projects/myapp(main 分支)
  • 副 worktree:~/projects/myapp/.worktrees/feature-a(feature-a 分支)
  • 副 worktree:~/projects/myapp/.worktrees/feature-b(feature-b 分支)

共享同一份 .git 目录,但工作区独立。

2.2 优势

优势说明
并行开发3 个 worktree = 3 个 Claude 会话同时跑
隔离一个 worktree 崩了不影响其他
快速切换不用 git stash + git checkout
独立依赖每个 worktree 装自己的 node_modules
易回滚直接删除 worktree 目录

2.3 跟 git checkout 对比

维度git checkoutgit worktree
并行❌ 同一时刻只能在一个分支✅ 多分支并行
依赖共享一份各自独立
build 缓存共享各自独立
编辑器切换要 reload各自打开
适用短期切换长期并行开发

三、完整工作流

3.1 目录选择优先级

# 优先级 1: .worktrees/ (Skill 首选)
.worktrees/feature-xyzzy -b feature-xyzzy

# 优先级 2: 项目本地其他目录
.worktrees/ 或 .branches/ 等

# 优先级 3: 查看 CLAUDE.md
cat CLAUDE.md | grep -A5 "worktree"

# 优先级 4: 询问用户
"项目没有标准 worktree 目录,放哪?"

3.2 创建 Worktree

# 1. 验证 .worktrees/ 在 .gitignore 中
git check-ignore .worktrees/ || echo "WARNING: .worktrees/ not in .gitignore"

# 2. 创建 worktree + 新分支
git worktree add .worktrees/feature-xyzzy -b feature-xyzzy

# 3. 跑 baseline 测试(确保干净)
cd .worktrees/feature-xyzzy
npm install  # 或 pnpm install
npm test     # 期望:全部通过

3.3 在 Worktree 中工作

# 4. 编辑代码、提交
git add .
git commit -m "feat: implement feature xyzzy"

# 5. 跑测试
npm test

# 6. 完成后(交给 finishing-a-development-branch)
# - merge / PR / keep / discard

3.4 完整脚本

#!/bin/bash
# 简化版 Skill 行为
set -e

BRANCH=$1
if [ -z "$BRANCH" ]; then
  echo "Usage: ./new-worktree.sh <branch-name>"
  exit 1
fi

# 1. 验证 .worktrees 忽略
if ! git check-ignore .worktrees/ 2>/dev/null; then
  echo "ERROR: .worktrees/ not in .gitignore"
  exit 1
fi

# 2. 创建
git worktree add ".worktrees/$BRANCH" -b "$BRANCH"

# 3. 跑 baseline
cd ".worktrees/$BRANCH"
if [ -f "package.json" ]; then
  npm install
  npm test
elif [ -f "go.mod" ]; then
  go mod download
  go test ./...
elif [ -f "requirements.txt" ]; then
  pip install -r requirements.txt
  pytest
fi

echo "Worktree ready at .worktrees/$BRANCH"

四、并行开发实战

4.1 多个 worktree + 多个 Claude

# Terminal 1
cd .worktrees/feature-auth
claude  # 一个 Claude 会话

# Terminal 2
cd .worktrees/feature-payment
claude  # 另一个 Claude 会话

# Terminal 3
cd .worktrees/bugfix-1234
claude  # 第三个 Claude 会话

4.2 典型场景

来源:Claude Code 团队实践

# 场景:同时处理 3 件事
git worktree add .worktrees/feature-xyz -b feature-xyz
git worktree add .worktrees/fix-1234 -b fix-1234
git worktree add .worktrees/upgrade-react -b upgrade-react

# 3 个 Claude 实例同时跑
# - 终端 1: 开发 feature-xyz
# - 终端 2: 修复 bug 1234
# - 终端 3: 升级 React 19

4.3 Claude Code 团队最爱

“Worktree 模式是 Claude Code 团队提高生产力的最大来源。” —— 来源:Anthropic 内部

具体实践:

  • 3-5 个 worktree 并行(人手一个 Claude)
  • 命名约定:feature-xxxfix-xxxanalysis
  • 配合 tmux + shell alias(za / zb / zc)
  • 一个 “analysis” worktree 只做”读日志 / 跑 BigQuery”不污染主开发

五、与 Superpowers 其他 Skills 配合

Skill配合方式
brainstormingbrainstorm 后开 worktree 实施
writing-plansplan 写到 worktree 目录
subagent-driven-development每个 worktree 派 subagent
finishing-a-development-branch完成后 merge / PR / 清理
dispatching-parallel-agents配合并行 worktree

完整工作流:

[1] brainstorming
  ↓
[2] writing-plans (写到 docs/plans/...)
  ↓
[3] using-git-worktrees (创建 worktree)
  ↓
[4] subagent-driven-development (派 subagent 实施)
  ↓
[5] test-driven-development (每个 task)
  ↓
[6] verification-before-completion (跑测试)
  ↓
[7] finishing-a-development-branch (merge / PR / 清理)

六、5 大实战技巧

6.1 命名规范

# ✅ GOOD
.worktrees/feature-user-auth
.worktrees/fix-login-redirect
.worktrees/upgrade-react-19
.worktrees/analysis-bigquery

# ❌ BAD
.worktrees/test1
.worktrees/asdf
.worktrees/branch-1

6.2 配合 tmux + alias

# ~/.zshrc
alias za='cd ~/projects/myapp/.worktrees/feature-a && claude'
alias zb='cd ~/projects/myapp/.worktrees/feature-b && claude'
alias zc='cd ~/projects/myapp/.worktrees/feature-c && claude'

6.3 配合并行任务

# 同时跑 5 个 worktree
for branch in auth payment fix-1234 upgrade perf-test; do
  git worktree add ".worktrees/$branch" -b "$branch"
done

6.4 清理已完成 worktree

# Skill 自动清理(finishing-a-development-branch)
# 手动清理
git worktree remove .worktrees/feature-xyz
git branch -d feature-xyz  # 删除已合并分支

6.5 baseline 测试

# 创建 worktree 后,跑 baseline 确保干净
cd .worktrees/feature-xyz
npm install
npm test
# 期望:全部通过
# 如果失败,可能主分支有 broken test,先修主分支

七、6 大反模式

7.1 worktree 目录没加 .gitignore

# ❌ BAD - worktree 内容被意外 commit
git add .worktrees/  # 灾难

# ✅ GOOD
# .gitignore
.worktrees/
.worktrees/*
!.worktrees/.gitkeep

7.2 同一分支开多个 worktree

# ❌ 错误
git worktree add .worktrees/feature-a -b feature-a
git worktree add .worktrees/feature-a-dup -b feature-a
# Git 报错:branch already checked out

7.3 在主 worktree 改 worktree 子模块

# ❌ BAD
cd main_project
vim .worktrees/feature-a/some_file.go  # 不会被 worktree 看到

# ✅ GOOD
cd .worktrees/feature-a
vim some_file.go

7.4 不跑 baseline 就开干

# ❌ 跳到 worktree 直接改代码
git worktree add .worktrees/feature
# 改代码
# commit
# → 主分支可能已经 broken

7.5 长期 worktree 不清理

# ❌ 6 个月后 10 个 worktree 残留
$ git worktree list
.worktrees/feature-a  dead
.worktrees/feature-b  dead
...

7.6 在 worktree 里 git 操作主分支

# ❌ BAD - 容易冲突
cd .worktrees/feature
git checkout main  # 工作区混乱

# ✅ 切回主 worktree
cd ~/projects/myapp
git checkout main

八、Q&A

Q: 跟 git stash 区别? A: stash 是”暂存当前修改”;worktree 是”完全独立的工作区”。

Q: worktree 共享 .git 吗? A: 共享 .git 目录,各自独立的工作区文件。

Q: 性能影响? A: 几乎没有。branch 切换是 O(1)。

Q: 适合 Windows 吗? A: Git 2.5+ 支持,Windows OK。

Q: IDE 支持? A: VS Code / JetBrains 都能打开多个 worktree。

Q: 跟 “git worktree prune” 关系? A: git worktree prune 清理无效的 worktree 引用。

Q: 必须用 Claude Code 吗? A: 不必须。worktree 本身是 Git 特性,任何场景都适用。

Q: 学习曲线? A: 30 分钟上手,1 天习惯。


九、Prompt 模板

模板 1:创建 worktree

请用 using-git-worktrees 流程:
1. 验证 .worktrees/ 在 .gitignore
2. 创建 .worktrees/feature-user-auth
3. 跑 baseline 测试
4. 准备开始 writing-plans

模板 2:并行 3 个任务

请用 using-git-worktrees + dispatching-parallel-agents:
1. 创建 3 个 worktrees:
   - .worktrees/fix-bug-1234
   - .worktrees/refactor-payment
   - .worktrees/upgrade-deps
2. 在每个里跑 baseline
3. 派 3 个 subagent 并行处理

模板 3:清理

请用 finishing-a-development-branch:
1. 跑全量测试
2. 列出 .worktrees/* 状态
3. 提供选项:merge / PR / keep / discard
4. 清理已选 worktree

十、真实踩坑案例

案例 1:worktree 内容被 commit

现象:git add . 把整个 worktree 文件夹加进去。 根因:.worktrees/ 没在 .gitignore解决:立刻 revert + 加 .gitignore

案例 2:baseline 测试失败

现象:worktree 创建后 npm test 失败。 根因:主分支本来就 broken。 解决:先修主分支,再开 worktree。

案例 3:worktree 占满磁盘

现象:5 个 worktree 各装 200MB node_modules = 1GB。 解决:用 pnpm 共享 store / npm ci --prefer-offline

案例 4:worktree 残留

现象:3 个月后 8 个 worktree 没人清理。 解决:在 CLAUDE.md 加”每月清理”hook。

案例 5:worktree 跨设备

现象:Mac worktree 拉到 Windows 出问题。 根因:node_modules 平台特定。 解决:rm -rf node_modules && npm install

案例 6:worktree 中 git pull 失败

现象:git pull 报”ref locked”。 根因:另一个 worktree 在 push。 解决:git worktree list 查所有 worktree 状态。

案例 7:worktree 合并冲突

现象:3 个 worktree 都改同一个文件。 解决:worktree 间串行合并 + rebase。

案例 8:worktree 命名冲突

现象:worktree 目录名跟分支名不一致。 解决:命名规范统一(worktree/branch-name)。

案例 9:IDE 找不到文件

现象:VS Code 打开 worktree 目录但文件不显示。 解决:code . 在 worktree 根目录重新打开。

案例 10:worktree 中 git hooks 不工作

现象:worktree 里 commit 触发不了 hook。 根因:worktree 共享 hooks 但 core.hooksPath 可能不同。 解决:git config core.hooksPath .git/hooks 在 worktree 里设。


十一、真实战绩

指标不用提升
并行任务数13-5+400%
主分支污染事故5/月0-100%
切换上下文时间5min10s-97%
实验代码保留率50%80%+60%

来源:Claude Code 团队实践


十二、与其他工具对比

工具用途关系
git worktree多工作区互补——本 Skill 用它
git stash暂存修改互补——短期切换用 stash
gh pr创建 PR互补——完成后用
GitHub Codespaces云端开发互补——远程协作
Docker dev container容器化开发互补——一致环境

十三、安装

# Claude Code
/plugin marketplace add obra/superpowers
/plugin install superpowers@claude-plugins-official

# 通用
npx skills add obra/superpowers --skill using-git-worktrees

# Git worktree 本身是 Git 2.5+ 自带
git --version  # >= 2.5

# 验证
git worktree add --help

十四、总结

核心价值:

  • 强制隔离工作区
  • 支持并行 Claude 会话
  • 避免主分支污染
  • 易于回滚
  • 与 finishing-a-development-branch 配合清理

适用人群:

  • 多任务并行开发者
  • AI 编程重度用户
  • 团队 Lead
  • 长期项目维护者

投入产出比:⭐⭐⭐⭐⭐(5/5)—— AI 编程必装。

何时不要用:

  • 1 行修改
  • 已经在 worktree 里
  • 一次性脚本
  • 完全干净的主分支(直接用 main)

参考链接:

📦 快速安装

1 Git Clone
git clone https://github.com/obra/superpowers.git ~/superpowers
mkdir -p ~/.claude/skills
ln -s ~/superpowers/skills/using-git-worktrees ~/.claude/skills/using-git-worktrees