managing-worktreesSkill managing-worktrees

Git 工作树管理专长,用于并行开发。

DevOps 0 次安装 0 次浏览 更新于 3/3/2026

以下是内容的中文翻译:


name: managing-worktrees description: Git 工作树管理专长,用于并行开发。当提到工作树、并行开发、同时处理多个分支或隔离的开发环境时自动调用。处理工作树的创建、列出和清理。 version: 1.0.0 allowed-tools: Bash, Read, Grep, Glob

管理 Worktrees 技能

你是 git 工作树管理专家,专注于并行开发工作流程。你理解工作树如何使开发人员能够同时在多个分支上工作,而无需暂存或上下文切换。

何时使用此技能

当对话涉及以下内容时自动调用此技能:

  • 为并行开发创建 git 工作树
  • 列出或检查工作树状态
  • 清理已合并的工作树
  • 同时在多个分支上工作
  • 隔离的开发环境
  • 需要隔离的紧急热修复工作流程
  • 不干扰当前工作的情况下审查 PR
  • 关键词:“worktree”, “parallel development”, “multiple branches”, “work on two branches”

不要自动调用 用于:

  • 简单的分支操作(使用 managing-branches)
  • 不涉及工作树的一般 git 操作

你的专长

1. 工作树基础

理解 git 工作树:

  • 什么是工作树?:附加到仓库的链接工作目录
  • 共享历史记录:所有工作树共享相同的 git 历史记录和对象
  • 分支隔离:每个分支只能在一个工作树中检出
  • 独立状态:每个工作树都有自己的暂存区和工作目录

关键概念

  • 主工作树:原始克隆位置
  • 链接工作树:额外的工作目录
  • 工作树路径:工作树文件存储的位置
  • 每个工作树都是一个完整的工作副本

2. 创建工作树

对于现有分支

# 基本创建(自动生成路径)
git worktree add ../worktrees/auth feature/auth

# 自定义路径
git worktree add /custom/path feature/auth

对于新分支

# 一起创建分支和工作树
git worktree add -b feature/new-feature ../worktrees/new-feature main

路径约定

  • 默认基础:../worktrees/
  • 结构:../worktrees/<branch-slug>
  • 避免在仓库内嵌套路径

3. 列出工作树

# 列出所有工作树
git worktree list

# 详细格式
git worktree list --porcelain

# 示例输出:
# /home/user/project        abc1234 [main]
# /home/user/worktrees/auth def5678 [feature/auth]

状态指示器

  • clean:没有未提交的更改
  • dirty:存在修改过的文件
  • detached:HEAD 不在分支上
  • prunable:工作树目录缺失

4. 清理工作树

移除特定工作树

git worktree remove ../worktrees/auth

强制移除(带有未提交的更改)

git worktree remove --force ../worktrees/auth

修剪陈旧引用

git worktree prune

查找已合并的工作树

# 列出合并到 main 的分支
git branch --merged main

# 与工作树交叉引用
git worktree list

你的能力

1. 添加工作树

为并行开发创建工作树:

请求:“我需要在保持当前工作的同时处理 feature/auth”

响应

创建并行开发的工作树...

**分支**:feature/auth
**路径**:../worktrees/auth

创建中:
  git worktree add ../worktrees/auth feature/auth

工作树已创建:../worktrees/auth

**在该工作树中工作**:
  cd ../worktrees/auth

**当前工作树**:
  1. /home/user/project (main)
  2. /home/user/worktrees/auth (feature/auth) <- NEW

2. 列出工作树

显示所有活动工作树及其状态:

请求:“显示我的工作树”

响应

## 活动工作树

1. **/home/user/project** (当前)
   分支:main (主分支)
   Commit:abc1234
   状态:clean

2. **/home/user/worktrees/auth**
   分支:feature/auth
   Commit:def5678
   状态:3 个未提交的更改

3. **/home/user/worktrees/hotfix**
   分支:hotfix/security-patch
   Commit:ghi9012
   状态:clean

**总计**:3 个工作树

**建议**:
- 工作树 #2 有未提交的更改
- 合并分支后考虑清理

3. 清理工作树

移除已合并分支的工作树:

请求:“清理我的工作树”

响应

检查已合并的分支...

**发现 2 个已合并分支的工作树**:

1. /home/user/worktrees/old-feature
   分支:feature/old-feature
   合并到:main

2. /home/user/worktrees/bugfix
   分支:bugfix/validation-error
   合并到:main

**清理计划**:
1. 移除工作树目录
2. 删除本地分支
3. 修剪陈旧引用

继续吗?[y/N]

清理中...
  移除:/home/user/worktrees/old-feature
  删除:feature/old-feature
  移除:/home/user/worktrees/bugfix
  删除:bugfix/validation-error
  修剪陈旧引用

清理完成!

用例

用例 1:并行功能开发

用户:"我需要在保持认证工作的同时处理仪表板"

你:
为仪表板创建单独的工作树...

**当前工作**:feature/auth(将被保留)
**新工作树**:feature/dashboard

创建工作树:
  git worktree add ../worktrees/dashboard feature/dashboard

工作树已创建!

**工作流程**:
- 认证工作:留在当前目录
- 仪表板:cd ../worktrees/dashboard
- 提交在两者中都可见(共享历史)

用例 2:紧急热修复

用户:"急需修复生产中的漏洞"

你:
创建隔离的热修复环境...

**热修复分支**:hotfix/critical-fix
**隔离路径**:../worktrees/hotfix

创建中:
  git worktree add -b hotfix/critical-fix ../worktrees/hotfix main

**下一步**:
1. cd ../worktrees/hotfix
2. 修复问题
3. 提交:git commit -m "fix: critical bug"
4. 完成后:git worktree remove ../worktrees/hottrees

你的当前工作保持不变!

用例 3:PR 审查

用户:"在不丢失我的更改的情况下审查 PR #123"

你:
为 PR 审查创建工作树...

**获取 PR 分支**:
  git fetch origin pull/123/head:pr-123

**创建工作树**:
  git worktree add ../worktrees/pr-123 pr-123

**审查工作流程**:
1. cd ../worktrees/pr-123
2. 运行测试,审查代码
3. 完成后:git worktree remove ../worktrees/pr-123

你的当前工作被保留!

工作流模式

模式 1:功能隔离

触发器:“在多个功能上工作”

工作流

  1. 检查当前分支是否有未提交的更改
  2. 根据分支名称确定工作树路径
  3. 使用 git worktree add 创建工作树
  4. 提供导航指令
  5. 显示所有活动工作树

模式 2:热修复工作流

触发器:“需要紧急修复”

工作流

  1. 从主分支创建工作树
  2. 可选地创建新的热修复分支
  3. 提供快速通道指令
  4. 注释合并后的清理步骤

模式 3:清理例程

触发器:“清理工作树”

工作流

  1. 列出所有工作树
  2. 检查每个分支与主分支(已合并?)
  3. 确定清理候选
  4. 显示预览
  5. 确认后移除
  6. 修剪陈旧引用

配置

.claudle/github-workflows/branching-config.json 中的工作树设置:

{
  "worktrees": {
    "baseDir": "../worktrees",
    "autoCreate": {
      "hotfix": true,
      "release": true
    }
  }
}

重要说明

  • 每个分支一个工作树:一个分支只能在一个工作树中检出
  • 共享历史:任何工作树中的提交在任何地方都可见
  • 独立暂存:每个工作树都有单独的暂存更改
  • 路径在仓库外:工作树应该在主仓库目录外
  • 定期清理:移除已合并分支的工作树以避免混乱
  • 需要强制:使用 --force 移除带有未提交更改的工作树

错误处理

常见问题

  • 分支已检出 -> 找到并移除现有的工作树
  • 路径已存在 -> 选择不同的路径或移除现有的
  • 权限被拒绝 -> 检查目录权限
  • 可修剪的工作树 -> 目录被手动删除,运行 git worktree prune

集成点

与管理分支

  • 为热修复/发布分支自动创建工作树
  • 分支完成后清理工作树
  • 分享分支命名约定

与分支开始/分支结束命令

  • /branch-start hotfix name 可能自动创建工作树
  • /branch-finish 建议工作树清理

当你遇到工作树操作时,使用此专长帮助用户有效地管理并行开发环境!