关于 using-git-worktrees
用于创建隔离 Git worktree 的开发技能,让多个分支可并行工作而无需切换主工作目录,并指导目录选择、安全检查、项目设置和基线测试。
主要功能
- 01按优先级选择 worktree 目录
- 02查找 CLAUDE.md 中的偏好
- 03验证项目目录的 .gitignore
- 04按项目类型安装依赖
- 05验证初始测试基线
适用场景
- 01为功能分支准备隔离工作区
- 02在实现前运行干净的基线测试
- 03遵循仓库约定选择 worktree 位置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ izyanrajwani/ agent-skills-library --skill using-git-worktrees安装后在 Claude Code 中输入/using-git-worktrees确认已加载。
详细介绍
使用 Git Worktrees
概述
Git worktrees 会创建共享同一仓库的隔离工作区,让你无需切换分支即可同时处理多个分支。
核心原则: 系统地选择目录 + 安全验证 = 可靠的隔离。
开始时声明:“我将使用 using-git-worktrees 技能来设置隔离工作区。”
目录选择流程
按以下优先顺序执行:
1. 检查现有目录
# Check in priority order
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
**如果找到:**使用该目录。如果两个目录都存在,则优先使用 .worktrees。
2. 检查 CLAUDE.md
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
**如果指定了偏好:**直接使用,无需询问。
3. 询问用户
如果两个目录都不存在,且 CLAUDE.md 中也没有指定偏好:
No worktree directory found. Where should I create worktrees?
1. .worktrees/ (project-local, hidden)
2. ~/.config/superpowers/worktrees/<project-name>/ (global location)
Which would you prefer?
安全验证
对于项目本地目录(.worktrees 或 worktrees)
创建 worktree 前必须验证 .gitignore:
# Check if directory pattern in .gitignore
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
如果未列入 .gitignore:
根据 Jesse 的规则“立即修复损坏的内容”:
- 在 .gitignore 中添加适当的条目
- 提交更改
- 继续创建 worktree
**为什么至关重要:**防止意外将 worktree 内容提交到仓库。
对于全局目录(~/.config/superpowers/worktrees)
无需验证 .gitignore——该目录完全位于项目之外。
创建步骤
1. 检测项目名称
project=$(basename "$(git rev-parse --show-toplevel)")
2. 创建 Worktree
# Determine full path
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
# Create worktree with new branch
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
3. 运行项目设置
自动检测并运行适当的设置流程:
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if [ -f Cargo.toml ]; then cargo build; fi
# Python
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
# Go
if [ -f go.mod ]; then go mod download; fi
4. 验证干净的基线
运行测试,确保 worktree 初始状态干净:
# Examples - use project-appropriate command
npm test
cargo test
pytest
go test ./...
**如果测试失败:**报告失败情况,并询问是继续还是调查原因。
**如果测试通过:**报告已就绪。
5. 报告位置
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
快速参考
| 情况 | 操作 |
|---|---|
.worktrees/ 存在 | 使用它(验证 .gitignore) |
worktrees/ 存在 | 使用它(验证 .gitignore) |
| 两者都存在 | 使用 .worktrees/ |
| 两者都不存在 | 检查 CLAUDE.md → 询问用户 |
| 目录未列入 .gitignore | 立即添加并提交 |
| 基线测试失败 | 报告失败情况并询问 |
| 没有 package.json/Cargo.toml | 跳过依赖安装 |
常见错误
跳过 .gitignore 验证
- **问题:**worktree 内容会被跟踪,污染 git 状态
- **修正:**创建项目本地 worktree 前,务必先 grep .gitignore
想当然地确定目录位置
- **问题:**造成不一致,违反项目约定
- **修正:**遵循优先顺序:现有目录 > CLAUDE.md > 询问
测试失败仍继续
- **问题:**无法区分新 Bug 与已有问题
- **修正:**报告失败情况,并获得明确许可后再继续
硬编码设置命令
- **问题:**项目使用不同工具时会失效
- **修正:**根据项目文件(package.json 等)自动检测
工作流示例
You: I'm using the using-git-worktrees skill to set up an isolated workspace.
[Check .worktrees/ - exists]
[Verify .gitignore - contains .worktrees/]
[Create worktree: git worktree add .worktrees/auth -b feature/auth]
[Run npm install]
[Run npm test - 47 passing]
Worktree ready at /Users/jesse/myproject/.worktrees/auth
Tests passing (47 tests, 0 failures)
Ready to implement auth feature
危险信号
绝不:
- 未验证 .gitignore 就创建 worktree(项目本地)
- 跳过基线测试验证
- 未经询问就带着失败的测试继续
- 目录位置不明确时自行假定
- 跳过 CLAUDE.md 检查
务必:
- 遵循目录优先顺序:现有目录 > CLAUDE.md > 询问
- 验证项目本地目录的 .gitignore
- 自动检测并运行项目设置
- 验证测试基线干净
集成
由以下内容调用:
- brainstorming Skillc(阶段 4)——设计获批并即将开始实施时必须使用
- 任何需要隔离工作区的技能
搭配使用:
- finishing-a-development-branch Skill——工作完成后必须用于清理
- executing-plans 或 subagent-driven-development Skill——在此 worktree 中开展工作
评论
支持 Markdown