Back to list
SPURSGO

using-git-worktrees

by SPURSGO

Other Chinese translations of awesome skills

0🍴 0📅 Jan 20, 2026

SKILL.md


name: using-git-worktrees description: 在开始需要与当前工作空间隔离的功能工作时使用,或在执行实施计划之前 - 创建具有智能目录选择和安全验证的隔离 git worktrees

使用 Git Worktrees

概述

Git worktrees 创建共享同一仓库的隔离工作空间,允许同时处理多个分支而无需切换。

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

开始时宣布: "我正在使用 using-git-worktrees 技能来设置隔离的工作空间。"

目录选择流程

遵循此优先级顺序:

1. 检查现有目录

# 按优先级顺序检查
ls -d .worktrees 2>/dev/null     # 首选(隐藏)
ls -d worktrees 2>/dev/null      # 替代

如果找到: 使用该目录。如果两者都存在,.worktrees 优先。

2. 检查 CLAUDE.md

grep -i "worktree.*director" CLAUDE.md 2>/dev/null

如果指定了偏好: 使用它而不询问。

3. 询问用户

如果不存在目录且没有 CLAUDE.md 偏好:

未找到 worktree 目录。我应该在哪里创建 worktrees?

1. .worktrees/(项目本地,隐藏)
2. ~/.config/superpowers/worktrees/<project-name>/(全局位置)

你更喜欢哪个?

安全验证

对于项目本地目录(.worktrees 或 worktrees)

必须在创建 worktree 之前验证目录被忽略:

# 检查目录是否被忽略(尊重本地、全局和系统 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

# 确定完整路径
case $LOCATION in
  .worktrees|worktrees)
    path="$LOCATION/$BRANCH_NAME"
    ;;
  ~/.config/superpowers/worktrees/*)
    path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
    ;;
esac

# 使用新分支创建 worktree
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 从干净开始:

# 示例 - 使用项目适当的命令
npm test
cargo test
pytest
go test ./...

如果测试失败: 报告失败,询问是否继续或调查。

如果测试通过: 报告就绪。

5. 报告位置

Worktree 准备就绪于 <full-path>
测试通过(<N> 个测试,0 个失败)
准备实施 <feature-name>

快速参考

情况操作
.worktrees/ 存在使用它(验证忽略)
worktrees/ 存在使用它(验证忽略)
两者都存在使用 .worktrees/
都不存在检查 CLAUDE.md → 询问用户
目录未忽略添加到 .gitignore + 提交
基线期间测试失败报告失败 + 询问
没有 package.json/Cargo.toml跳过依赖安装

常见错误

跳过忽略验证

  • 问题: Worktree 内容被跟踪,污染 git status
  • 修复: 在创建项目本地 worktree 之前始终使用 git check-ignore

假设目录位置

  • 问题: 创建不一致,违反项目约定
  • 修复: 遵循优先级:现有 > CLAUDE.md > 询问

在测试失败时继续

  • 问题: 无法区分新错误与预先存在的问题
  • 修复: 报告失败,获得明确许可继续

硬编码设置命令

  • 问题: 在使用不同工具的项目上中断
  • 修复: 从项目文件自动检测(package.json 等)

示例工作流

你:我正在使用 using-git-worktrees 技能来设置隔离的工作空间。

[检查 .worktrees/ - 存在]
[验证忽略 - git check-ignore 确认 .worktrees/ 被忽略]
[创建 worktree:git worktree add .worktrees/auth -b feature/auth]
[运行 npm install]
[运行 npm test - 47 通过]

Worktree 准备就绪于 /Users/jesse/myproject/.worktrees/auth
测试通过(47 个测试,0 个失败)
准备实施 auth 功能

危险信号

永远不要:

  • 在不验证它被忽略的情况下创建 worktree(项目本地)
  • 跳过基线测试验证
  • 在不询问的情况下继续失败的测试
  • 在模糊时假设目录位置
  • 跳过 CLAUDE.md 检查

总是:

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

集成

由以下调用:

  • brainstorming(阶段 4)- 当设计被批准并随后实施时必需
  • 任何需要隔离工作空间的技能

配对:

  • finishing-a-development-branch - 工作完成后清理必需
  • executing-planssubagent-driven-development - 工作在此 worktree 中进行

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon