mcpField
W
worktrees

worktrees

github.com/ariadoss开发1257 次安装今天更新
代码仓库

关于 worktrees

worktrees 技能指导 Git worktree 的目录选择、安全检查、创建和基线测试,面向需要并行处理多个分支的开发工作。

主要功能

  1. 01按优先级选择工作目录
  2. 02检查项目目录是否被忽略
  3. 03创建隔离的 Git worktree
  4. 04根据项目文件运行设置步骤
  5. 05运行测试验证初始状态
  6. 06报告工作区位置与状态

适用场景

  1. 01并行开发多个 Git 分支
  2. 02为计划执行或子 Agent 开辟隔离工作区

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ariadoss/superskills --skill worktrees

安装后在 Claude Code 中输入/worktrees确认已加载。

详细介绍

使用 Git Worktree

概述

Git worktree 会创建共享同一仓库的隔离工作区,让你无需切换分支即可同时处理多个分支。

核心原则: 系统地选择目录 + 安全验证 = 可靠隔离。

开始时声明:“我正在使用 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 前,必须验证目录已被忽略:

# Check if directory is ignored (respects local, global, and system gitignore)
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null

如果未被忽略:

按照 Jesse 的规则“立即修复损坏项”:

  1. 在 .gitignore 中添加适当的条目
  2. 提交更改
  3. 继续创建 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/ 已存在使用它(验证已被忽略)
worktrees/ 已存在使用它(验证已被忽略)
两者都存在使用 .worktrees/
两者都不存在检查 CLAUDE.md → 询问用户
目录未被忽略添加到 .gitignore 并提交
基线测试失败报告失败情况并询问
没有 package.json/Cargo.toml跳过依赖安装

常见错误

跳过忽略状态验证
  • **问题:**worktree 内容会被跟踪,导致 git status 输出混乱
  • **修复:**创建项目本地 worktree 前,始终使用 git check-ignore
想当然地确定目录位置
  • **问题:**造成不一致,违反项目约定
  • **修复:**遵循优先级:现有目录 > CLAUDE.md > 询问
测试失败仍继续
  • **问题:**无法区分新 bug 与既有问题
  • **修复:**报告失败情况,并获得明确许可后再继续
将设置命令写死
  • **问题:**遇到使用其他工具的项目时会出错
  • **修复:**根据项目文件(package.json 等)自动检测

工作流示例

You: I'm using the using-git-worktrees skill to set up an isolated workspace.

[Check .worktrees/ - exists]
[Verify ignored - git check-ignore confirms .worktrees/ is ignored]
[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

注意事项

绝不:

  • 未验证目录已被忽略就创建 worktree(项目本地)
  • 跳过基线测试验证
  • 未经询问就在测试失败时继续
  • 目录位置不明确时自行假定
  • 跳过 CLAUDE.md 检查

始终:

  • 遵循目录优先级:现有目录 > CLAUDE.md > 询问
  • 验证项目本地目录已被忽略
  • 自动检测并运行项目设置流程
  • 验证测试基线干净

集成

由以下技能调用:

  • brainstorming(阶段 4)——设计获批并进入实现阶段时,必须调用
  • subagent-driven-development——执行任何任务前,必须调用
  • executing-plans——执行任何任务前,必须调用
  • 任何需要隔离工作区的技能

搭配使用:

  • finishing-a-development-branch——工作完成后必须调用以进行清理

评论

支持 Markdown