{"id":"d9b12889-2274-467a-bab3-b542d16ae5f6","shortId":"u4PeTM","kind":"skill","title":"using-git-worktrees","tagline":"当需要开始与当前工作区隔离的功能开发或执行实现计划之前使用——创建具有智能目录选择和安全验证的隔离 git 工作树","description":"# 使用 Git 工作树\n\n## 概述\n\nGit 工作树创建共享同一仓库的隔离工作区，允许同时在多个分支上工作而无需切换。\n\n**核心原则：** 系统化的目录选择 + 安全验证 = 可靠的隔离。\n\n**开始时宣布：** \"我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。\"\n\n## 目录选择流程\n\n按以下优先顺序执行：\n\n### 1. 检查现有目录\n\n```bash\n# 按优先顺序检查\nls -d .worktrees 2>/dev/null     # 首选（隐藏目录）\nls -d worktrees 2>/dev/null      # 备选\n```\n\n**如果找到：** 使用该目录。如果两者都存在，`.worktrees` 优先。\n\n### 2. 检查 CLAUDE.md\n\n```bash\ngrep -i \"worktree.*director\" CLAUDE.md 2>/dev/null\n```\n\n**如果指定了偏好：** 直接使用，无需询问。\n\n### 3. 询问用户\n\n如果没有现有目录且 CLAUDE.md 中无偏好设置：\n\n```\n未找到工作树目录。我应该在哪里创建工作树？\n\n1. .worktrees/（项目本地，隐藏目录）\n2. ~/.config/superpowers/worktrees/<project-name>/（全局位置）\n\n你倾向哪个？\n```\n\n## 安全验证\n\n### 项目本地目录（.worktrees 或 worktrees）\n\n**创建工作树前必须验证目录已被忽略：**\n\n```bash\n# 检查目录是否被忽略（遵循本地、全局和系统 gitignore）\ngit check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null\n```\n\n**如果未被忽略：**\n\n根据 Jesse 的规则\"立即修复坏掉的东西\"：\n1. 在 .gitignore 中添加相应条目\n2. 提交更改\n3. 继续创建工作树\n\n**为什么这很关键：** 防止意外将工作树内容提交到仓库。\n\n### 全局目录（~/.config/superpowers/worktrees）\n\n无需 .gitignore 验证——完全在项目之外。\n\n## 创建步骤\n\n### 1. 检测项目名称\n\n```bash\nproject=$(basename \"$(git rev-parse --show-toplevel)\")\n```\n\n### 2. 创建工作树\n\n```bash\n# 确定完整路径\ncase $LOCATION in\n  .worktrees|worktrees)\n    path=\"$LOCATION/$BRANCH_NAME\"\n    ;;\n  ~/.config/superpowers/worktrees/*)\n    path=\"~/.config/superpowers/worktrees/$project/$BRANCH_NAME\"\n    ;;\nesac\n\n# 创建带有新分支的工作树\ngit worktree add \"$path\" -b \"$BRANCH_NAME\"\ncd \"$path\"\n```\n\n### 3. 运行项目设置\n\n自动检测并运行相应的设置命令：\n\n```bash\n# Node.js\nif [ -f package.json ]; then npm install; fi\n\n# Rust\nif [ -f Cargo.toml ]; then cargo build; fi\n\n# Python\nif [ -f requirements.txt ]; then pip install -r requirements.txt; fi\nif [ -f pyproject.toml ]; then poetry install; fi\n\n# Go\nif [ -f go.mod ]; then go mod download; fi\n```\n\n### 4. 验证基线正常\n\n运行测试确保工作树初始状态干净：\n\n```bash\n# 示例 - 使用项目对应的命令\nnpm test\ncargo test\npytest\ngo test ./...\n```\n\n**如果测试失败：** 报告失败情况，询问是否继续或排查。\n\n**如果测试通过：** 报告就绪。\n\n### 5. 报告位置\n\n```\n工作树已就绪：<full-path>\n测试通过（<N> 个测试，0 个失败）\n准备实现 <feature-name>\n```\n\n## 快速参考\n\n| 情况 | 操作 |\n|------|------|\n| `.worktrees/` 存在 | 使用它（验证已忽略） |\n| `worktrees/` 存在 | 使用它（验证已忽略） |\n| 两者都存在 | 使用 `.worktrees/` |\n| 都不存在 | 检查 CLAUDE.md → 询问用户 |\n| 目录未被忽略 | 添加到 .gitignore + 提交 |\n| 基线测试失败 | 报告失败 + 询问 |\n| 无 package.json/Cargo.toml | 跳过依赖安装 |\n\n## 常见错误\n\n### 跳过忽略验证\n\n- **问题：** 工作树内容被跟踪，污染 git status\n- **修复：** 创建项目本地工作树前始终使用 `git check-ignore`\n\n### 假设目录位置\n\n- **问题：** 造成不一致，违反项目约定\n- **修复：** 遵循优先级：现有目录 > CLAUDE.md > 询问\n\n### 带着失败的测试继续\n\n- **问题：** 无法区分新 bug 和已有问题\n- **修复：** 报告失败，获得明确许可后再继续\n\n### 硬编码设置命令\n\n- **问题：** 在使用不同工具的项目上会出错\n- **修复：** 从项目文件自动检测（package.json 等）\n\n## 示例工作流\n\n```\n你：我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。\n\n[检查 .worktrees/ - 存在]\n[验证已忽略 - git check-ignore 确认 .worktrees/ 已被忽略]\n[创建工作树：git worktree add .worktrees/auth -b feature/auth]\n[运行 npm install]\n[运行 npm test - 47 个通过]\n\n工作树已就绪：/Users/jesse/myproject/.worktrees/auth\n测试通过（47 个测试，0 个失败）\n准备实现 auth 功能\n```\n\n## 红线\n\n**绝不：**\n- 创建项目本地工作树时不验证是否已忽略\n- 跳过基线测试验证\n- 不询问就带着失败的测试继续\n- 在有歧义时假设目录位置\n- 跳过 CLAUDE.md 检查\n\n**始终：**\n- 遵循目录优先级：现有目录 > CLAUDE.md > 询问\n- 对项目本地目录验证是否已忽略\n- 自动检测并运行项目设置\n- 验证测试基线干净\n\n## 集成\n\n**被以下技能调用：**\n- **brainstorming**（阶段 4）- 设计通过且需要实现时必需\n- **subagent-driven-development** - 执行任何任务前必需\n- **executing-plans** - 执行任何任务前必需\n- 任何需要隔离工作区的技能\n\n**配合使用：**\n- **finishing-a-development-branch** - 工作完成后清理时必需","tags":["using","git","worktrees","superpowers","jnmetacode","agent-skills","agentic-coding","ai-coding","chinese","claude-code","code-review","cursor"],"capabilities":["skill","source-jnmetacode","skill-using-git-worktrees","topic-agent-skills","topic-agentic-coding","topic-ai-coding","topic-chinese","topic-claude-code","topic-code-review","topic-cursor","topic-gemini-cli","topic-kiro","topic-mcp","topic-npm-package","topic-prompt-engineering"],"categories":["superpowers-zh"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jnMetaCode/superpowers-zh/using-git-worktrees","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jnMetaCode/superpowers-zh","source_repo":"https://github.com/jnMetaCode/superpowers-zh","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1857 github stars · SKILL.md body (3,237 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:46.354Z","embedding":null,"createdAt":"2026-04-18T21:56:01.934Z","updatedAt":"2026-05-03T00:52:46.354Z","lastSeenAt":"2026-05-03T00:52:46.354Z","tsv":"'/.config/superpowers/worktrees':77,123,154,156 '/cargo.toml':271 '/dev/null':37,44,61,98,106 '/users/jesse/myproject/.worktrees/auth':345 '0':240,349 '1':29,72,112,129 '2':36,43,51,60,76,97,105,116,141 '3':65,118,171 '4':217,375 '47':342,347 '5':235 'add':164,332 'auth':352 'b':166,334 'basenam':133 'bash':31,54,86,131,143,174,220 'brainstorm':373 'branch':152,158,167,392 'bug':298 'build':189 'cargo':188,225 'cargo.toml':186 'case':145 'cd':169 'check':93,101,284,324 'check-ignor':92,100,283,323 'claude.md':53,59,68,259,293,361,366 'd':34,41 'develop':380,391 'director':58 'download':215 'driven':379 'esac':160 'execut':383 'executing-plan':382 'f':177,185,193,202,210 'feature/auth':335 'fi':182,190,200,207,216 'finish':389 'finishing-a-development-branch':388 'git':3,7,10,13,24,91,99,134,162,278,282,315,322,330 'gitignor':90,114,125,263 'go':208,213,228 'go.mod':211 'grep':55 'ignor':94,102,285,325 'instal':181,197,206,338 'jess':109 'locat':146,151 'ls':33,40 'mod':214 'name':153,159,168 'node.js':175 'npm':180,223,337,340 'package.json':178,270,308 'package.json/cargo.toml':269 'pars':137 'path':150,155,165,170 'pip':196 'plan':384 'poetri':205 'project':132,157 'pyproject.toml':203 'pytest':227 'python':191 'q':95,103 'r':198 'requirements.txt':194,199 'rev':136 'rev-pars':135 'rust':183 'show':139 'show-toplevel':138 'skill' 'skill-using-git-worktrees' 'source-jnmetacode' 'status':279 'subag':378 'subagent-driven-develop':377 'test':224,226,229,341 'topic-agent-skills' 'topic-agentic-coding' 'topic-ai-coding' 'topic-chinese' 'topic-claude-code' 'topic-code-review' 'topic-cursor' 'topic-gemini-cli' 'topic-kiro' 'topic-mcp' 'topic-npm-package' 'topic-prompt-engineering' 'toplevel':140 'use':2,23,314 'using-git-worktre':1,22,313 'worktre':4,25,35,42,49,57,73,82,84,96,104,148,149,163,246,250,256,316,319,327,331 'worktrees/auth':333 '不询问就带着失败的测试继续':358 '两者都存在':254 '个失败':241,350 '个测试':239,348 '个通过':343 '中无偏好设置':69 '中添加相应条目':115 '为什么这很关键':120 '从项目文件自动检测':307 '任何需要隔离工作区的技能':386 '优先':50 '你':311 '你倾向哪个':79 '使用':9,255 '使用它':248,252 '使用该目录':47 '使用项目对应的命令':222 '修复':280,290,300,306 '假设目录位置':286 '允许同时在多个分支上工作而无需切换':15 '全局位置':78 '全局和系统':89 '全局目录':122 '准备实现':242,351 '创建具有智能目录选择和安全验证的隔离':6 '创建工作树':142,329 '创建工作树前必须验证目录已被忽略':85 '创建带有新分支的工作树':161 '创建步骤':128 '创建项目本地工作树前始终使用':281 '创建项目本地工作树时不验证是否已忽略':356 '功能':353 '可靠的隔离':19 '和已有问题':299 '在':113 '在使用不同工具的项目上会出错':305 '在有歧义时假设目录位置':359 '基线测试失败':265 '备选':45 '如果两者都存在':48 '如果找到':46 '如果指定了偏好':62 '如果未被忽略':107 '如果没有现有目录且':67 '如果测试失败':230 '如果测试通过':233 '始终':363 '存在':247,251,320 '安全验证':18,80 '完全在项目之外':127 '对项目本地目录验证是否已忽略':368 '工作完成后清理时必需':393 '工作树':8,11 '工作树内容被跟踪':276 '工作树创建共享同一仓库的隔离工作区':14 '工作树已就绪':237,344 '已被忽略':328 '带着失败的测试继续':295 '常见错误':273 '开始时宣布':20 '当需要开始与当前工作区隔离的功能开发或执行实现计划之前使用':5 '快速参考':243 '情况':244 '我应该在哪里创建工作树':71 '我正在使用':21,312 '或':83 '执行任何任务前必需':381,385 '技能来建立一个隔离的工作区':26,317 '报告位置':236 '报告失败':266,301 '报告失败情况':231 '报告就绪':234 '按以下优先顺序执行':28 '按优先顺序检查':32 '提交':264 '提交更改':117 '操作':245 '无':268 '无法区分新':297 '无需':124 '无需询问':64 '未找到工作树目录':70 '核心原则':16 '根据':108 '检查':52,258,318,362 '检查现有目录':30 '检查目录是否被忽略':87 '检测项目名称':130 '概述':12 '污染':277 '测试通过':238,346 '添加到':262 '现有目录':292,365 '的规则':110 '目录未被忽略':261 '目录选择流程':27 '直接使用':63 '硬编码设置命令':303 '确定完整路径':144 '确认':326 '示例':221 '示例工作流':310 '立即修复坏掉的东西':111 '等':309 '系统化的目录选择':17 '红线':354 '绝不':355 '继续创建工作树':119 '自动检测并运行相应的设置命令':173 '自动检测并运行项目设置':369 '获得明确许可后再继续':302 '被以下技能调用':372 '设计通过且需要实现时必需':376 '询问':267,294,367 '询问是否继续或排查':232 '询问用户':66,260 '跳过':360 '跳过依赖安装':272 '跳过基线测试验证':357 '跳过忽略验证':274 '运行':336,339 '运行测试确保工作树初始状态干净':219 '运行项目设置':172 '违反项目约定':289 '造成不一致':288 '遵循优先级':291 '遵循本地':88 '遵循目录优先级':364 '都不存在':257 '配合使用':387 '问题':275,287,296,304 '防止意外将工作树内容提交到仓库':121 '阶段':374 '隐藏目录':39,75 '集成':371 '项目本地':74 '项目本地目录':81 '首选':38 '验证':126 '验证基线正常':218 '验证已忽略':249,253,321 '验证测试基线干净':370","prices":[{"id":"59eb9acd-9603-4502-8f9c-57dfa4fc54f0","listingId":"d9b12889-2274-467a-bab3-b542d16ae5f6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jnMetaCode","category":"superpowers-zh","install_from":"skills.sh"},"createdAt":"2026-04-18T21:56:01.934Z"}],"sources":[{"listingId":"d9b12889-2274-467a-bab3-b542d16ae5f6","source":"github","sourceId":"jnMetaCode/superpowers-zh/using-git-worktrees","sourceUrl":"https://github.com/jnMetaCode/superpowers-zh/tree/main/skills/using-git-worktrees","isPrimary":false,"firstSeenAt":"2026-04-18T21:56:01.934Z","lastSeenAt":"2026-05-03T00:52:46.354Z"}],"details":{"listingId":"d9b12889-2274-467a-bab3-b542d16ae5f6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jnMetaCode","slug":"using-git-worktrees","github":{"repo":"jnMetaCode/superpowers-zh","stars":1857,"topics":["agent-skills","agentic-coding","ai-coding","chinese","claude-code","code-review","cursor","gemini-cli","kiro","mcp","npm-package","prompt-engineering","skills","superpowers","tdd","trae"],"license":"mit","html_url":"https://github.com/jnMetaCode/superpowers-zh","pushed_at":"2026-04-28T15:32:18Z","description":"🦸 AI 编程超能力 · 中文增强版 — superpowers（116k+ ⭐）完整汉化 + 6 个中国原创 skills，让 Claude Code / Copilot CLI / Hermes Agent / Cursor / Windsurf / Kiro / Gemini CLI 等 16 款 AI 编程工具真正会干活","skill_md_sha":"a666b98da626c846532faf66d5550298dd3f76b2","skill_md_path":"skills/using-git-worktrees/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jnMetaCode/superpowers-zh/tree/main/skills/using-git-worktrees"},"layout":"multi","source":"github","category":"superpowers-zh","frontmatter":{"name":"using-git-worktrees","description":"当需要开始与当前工作区隔离的功能开发或执行实现计划之前使用——创建具有智能目录选择和安全验证的隔离 git 工作树"},"skills_sh_url":"https://skills.sh/jnMetaCode/superpowers-zh/using-git-worktrees"},"updatedAt":"2026-05-03T00:52:46.354Z"}}