用途
该技能用于在开始需要与当前工作区隔离的功能开发之前,或在执行实现计划之前,确保存在一个独立的工作区,避免当前分支被改动。
主要流程
第一步:检测现有隔离。技能要求先检查是否已经处于隔离工作区,而不是直接新建。使用 git rev-parse --git-dir 与 --git-common-dir 比较,若两者不同且不在子模块中,则说明已处于链接的 worktree,直接跳到项目设置。技能还提示需用 git rev-parse --show-superproject-working-tree 排除子模块情况,因为子模块中两个路径也会不同。若处于普通仓库检出,则需确认用户是否已声明 worktree 偏好,未声明时先征求同意。
第二步:创建工作区。优先尝试平台原生的 worktree 工具(如名为 EnterWorktree、WorktreeCreate 的工具、/worktree 命令或 --worktree 参数),使用后直接进入项目设置;仅在没有原生工具时回退到手动 git worktree add。目录选择优先级为:用户明确指定 > 项目内已有的 .worktrees 或 worktrees 目录 > 默认 .worktrees/。若使用项目内目录,必须先用 git check-ignore 验证其已被忽略,未被忽略则需加入 .gitignore 并提交。若 git worktree add 因沙箱权限失败,则改为在当前目录继续。
第三步:项目设置。自动检测并运行依赖安装:package.json 用 npm install,Cargo.toml 用 cargo build,requirements.txt 用 pip install -r,pyproject.toml 用 poetry install,go.mod 用 go mod download。
第四步:验证干净基线。运行项目对应测试命令(npm test、cargo test、pytest、go test ./... 等),测试失败时报告并询问是否继续或排查;通过则报告就绪。
适用场景
在开始需要隔离的功能开发、执行实现计划前,或希望保护当前分支不受开发改动影响时使用。
限制与注意事项
技能强调不要绕过平台原生工具,否则会产生原生工具无法感知和管理的状态;不要凭肉眼判断是否在 worktree 中,应运行检测命令;worktree 目录未忽略会把整棵目录树提交进仓库;基线测试失败时是否继续由用户决定。若没有原生工具且 git 创建失败,则在当前目录工作。