using-git-worktrees
在开始需要与当前工作区隔离的功能工作或执行实施计划时使用——通过原生工具或git worktree备用方案确保存在隔离工作区。
技能说明obra/superpowers
在开始需要与当前工作区隔离的功能工作或执行实施计划时使用——通过原生工具或git worktree备用方案确保存在隔离工作区。
技能简介
本技能用于在开始需要隔离的功能开发或执行实施计划前,确保存在独立的工作区。它会优先检测当前环境,使用平台原生工作树工具,只有在没有原生工具时才回退到 git worktree,避免影响当前分支。
使用场景
- 开始新功能开发,需要与当前工作区隔离时
- 执行实施计划前,需要干净的独立环境
- 多个任务并行,需要互不干扰的工作区
- 在子模块或普通仓库中,需要判断并创建安全的工作区
使用方法
将本 SKILL.md 放入技能目录即可启用。使用时按以下步骤执行:
- 检测当前隔离状态:判断是否已在链接工作树或子模块中。
- 创建隔离工作区:优先使用平台原生工具(如
EnterWorktree、WorktreeCreate);若无,则使用 Git 备用方案:
# 选择目录(按顺序):指令指定 > .worktrees/ > worktrees/ > 默认 .worktrees/
ls -d .worktrees 2>/dev/null
ls -d worktrees 2>/dev/null
# 确保目录已被 .gitignore 忽略
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
# 创建 worktree
path="$LOCATION/$BRANCH_NAME"
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
- 项目设置:自动检测并安装依赖(如
npm install、cargo build、pip install -r requirements.txt、go mod download)。 - 验证基线:运行测试确认工作区干净(如
npm test/cargo test/pytest/go test ./...)。
注意事项
- 在子模块中
GIT_DIR != GIT_COMMON也成立,需用git rev-parse --show-superproject-working-tree检查,避免误判为 worktree。 - 若
.worktrees/未被 git 忽略,必须先加入.gitignore并提交,否则可能误提交工作区内容。 - 如果
git worktree add因沙箱权限失败,应告知用户并在当前目录继续工作。 - 用户明确拒绝创建 worktree 时,原地工作并跳过创建步骤。