using-git-worktrees

在开始需要与当前工作区隔离的功能工作或执行实施计划时使用——通过原生工具或git worktree备用方案确保存在隔离工作区。

提供方:obra/superpowers调用次数:2.4k收藏:363更新:2026/08/28

技能说明obra/superpowers

在开始需要与当前工作区隔离的功能工作或执行实施计划时使用——通过原生工具或git worktree备用方案确保存在隔离工作区。

技能简介

本技能用于在开始需要隔离的功能开发或执行实施计划前,确保存在独立的工作区。它会优先检测当前环境,使用平台原生工作树工具,只有在没有原生工具时才回退到 git worktree,避免影响当前分支。

使用场景

  • 开始新功能开发,需要与当前工作区隔离时
  • 执行实施计划前,需要干净的独立环境
  • 多个任务并行,需要互不干扰的工作区
  • 在子模块或普通仓库中,需要判断并创建安全的工作区

使用方法

将本 SKILL.md 放入技能目录即可启用。使用时按以下步骤执行:

  1. 检测当前隔离状态:判断是否已在链接工作树或子模块中。
  2. 创建隔离工作区:优先使用平台原生工具(如 EnterWorktreeWorktreeCreate);若无,则使用 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"
  1. 项目设置:自动检测并安装依赖(如 npm installcargo buildpip install -r requirements.txtgo mod download)。
  2. 验证基线:运行测试确认工作区干净(如 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 时,原地工作并跳过创建步骤。