using-git-worktreeslisted
Install: claude install-skill xjxj71/ai-token-usage-statistics
# 使用 Git 工作树
## 概述
Git 工作树创建共享同一仓库的隔离工作区,允许同时在多个分支上工作而无需切换。
**核心原则:** 系统化的目录选择 + 安全验证 = 可靠的隔离。
**开始时宣布:** "我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。"
## 目录选择流程
按以下优先顺序执行:
### 1. 检查现有目录
```bash
# 按优先顺序检查
ls -d .worktrees 2>/dev/null # 首选(隐藏目录)
ls -d worktrees 2>/dev/null # 备选
```
**如果找到:** 使用该目录。如果两者都存在,`.worktrees` 优先。
### 2. 检查 CLAUDE.md
```bash
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
```
**如果指定了偏好:** 直接使用,无需询问。
### 3. 询问用户
如果没有现有目录且 CLAUDE.md 中无偏好设置:
```
未找到工作树目录。我应该在哪里创建工作树?
1. .worktrees/(项目本地,隐藏目录)
2. ~/.config/superpowers/worktrees/<project-name>/(全局位置)
你倾向哪个?
```
## 安全验证
### 项目本地目录(.worktrees 或 worktrees)
**创建工作树前必须验证目录已被忽略:**
```bash
# 检查目录是否被忽略(遵循本地、全局和系统 gitignore)
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
```
**如果未被忽略:**
根据 Jesse 的规则"立即修复坏掉的东西":
1. 在 .gitignore 中添加相应条目
2. 提交更改
3. 继续创建工作树
**为什么这很关键:** 防止意外将工作树内容提交到仓库。
### 全局目录(~/.config/superpowers/worktrees)
无需 .gitignore 验证——完全在项目之外。
## 创建步骤
### 1. 检测项目名称
```bash
project=$(basename "$(git rev-parse --show-toplevel)")
```
### 2. 创建工作树
```bash
# 确定完整路径
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
# 创建带有新分支的工作树
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
```
### 3. 运行项目设置
自动检测并运行相应的设置命令:
```bash
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if