mcpField
G
git-worktrees

git-worktrees

github.com/itallstartedwithaidea开发4477 次安装29 周前更新
代码仓库

关于 git-worktrees

利用 Git worktree 在不同目录中并行开发多个分支的 Agent 技能。它支持 Agent 并行任务和干净的测试基线,无需暂存更改或切换分支。

主要功能

  1. 01每个分支独立工作区
  2. 02并行任务开发
  3. 03用于测试的干净检出
  4. 04Worktree 生命周期指导
  5. 05并排比较分支

适用场景

  1. 01并行执行多个 Agent 任务
  2. 02在没有本地构建产物或更改时测试
  3. 03开发功能期间处理紧急修复
  4. 04比较不同分支上的实现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill git-worktrees

安装后在 Claude Code 中输入/git-worktrees确认已加载。

详细介绍

Git Worktrees

Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供

描述

Git Worktrees 可在不同目录中同时维护多个已检出的分支,从而实现并行开发。Agent 无需暂存更改并切换分支,而是为每项任务创建隔离的 worktree,以提供干净的测试基线并消除切换上下文的开销。每个 worktree 都是绑定到自身分支的完全独立工作区。

这项技能对于由子 Agent 驱动的开发至关重要,因为多个 Agent 会同时处理不同任务。若没有 worktree,Agent 就会覆盖彼此尚未提交的更改。有了 worktree,每个 Agent 都能在自己的目录和分支中工作,协调者则会将已完成的工作合并回主线。

Worktree 还能为测试提供干净的基线。当你需要在干净检出状态下验证测试是否通过——不受构建产物、本地配置或未提交更改的影响——全新的 worktree 就能满足这一需求。Worktree 的生命周期由明确的操作管理:任务开始时创建,完成时验证,合并后清理。

使用场景

  • 需要并行开发多个任务,且互不干扰
  • 子 Agent 需要隔离的文件系统来同时开展工作
  • 需要干净检出状态,以便在没有本地产物的情况下运行测试
  • 功能分支开发期间必须处理紧急修复
  • 最佳方案选优实现需要独立工作区
  • 希望并排比较不同分支的行为

工作原理

graph TD
    A[Main Repo] --> B["git worktree add ../task-1 -b feature/task-1"]
    A --> C["git worktree add ../task-2 -b feature/task-2"]
    A --> D["git worktree add ../hotfix -b hotfix/urgent"]
    B --> E[Agent 1 works in ../task-1]
    C --> F[Agent 2 works in ../task-2]
    D --> G[Agent 3 works in ../hotfix]
    E --> H[PR + Merge]
    F --> H
    G --> H
    H --> I["git worktree remove ../task-1"]
    H --> J["git worktree remove ../task-2"]
    H --> K["git worktree remove ../hotfix"]

每个 worktree 都是磁盘上的实际目录,拥有自己的检出分支。一个 worktree 中的更改不会影响其他 worktree。.git 元数据是共享的,因此可从任意 worktree 正常执行分支操作(push、fetch、log)。

实现

# Create a worktree for a new feature
git worktree add ../feature-auth -b feature/user-auth
cd ../feature-auth
npm install  # Dependencies may differ per branch

# List active worktrees
git worktree list
# /home/user/project        abc1234 [main]
# /home/user/feature-auth   def5678 [feature/user-auth]

# Run tests in a clean worktree
git worktree add ../clean-test --detach HEAD
cd ../clean-test
npm ci && npm test
cd ../project
git worktree remove ../clean-test

# Prune stale worktrees (after branch deletion)
git worktree prune
class WorktreeManager:
    def __init__(self, repo_root):
        self.repo_root = repo_root
        self.worktree_base = Path(repo_root).parent

    def create(self, task_name, base_branch="main"):
        branch = f"feature/{task_name}"
        path = self.worktree_base / task_name
        subprocess.run(
            ["git", "worktree", "add", str(path), "-b", branch, base_branch],
            cwd=self.repo_root, check=True
        )
        return WorktreeContext(path, branch)

    def remove(self, task_name):
        path = self.worktree_base / task_name
        subprocess.run(
            ["git", "worktree", "remove", str(path)],
            cwd=self.repo_root, check=True
        )

    def list_active(self):
        result = subprocess.run(
            ["git", "worktree", "list", "--porcelain"],
            cwd=self.repo_root, capture_output=True, text=True
        )
        return self.parse_worktree_list(result.stdout)

最佳实践

  • 始终从主仓库创建 worktree,不要从其他 worktree 创建
  • 在每个新 worktree 中运行 npm ci 或等效命令——各 worktree 不共享 node_modules
  • 合并后及时移除 worktree,避免占用过多磁盘空间
  • 定期使用 git worktree prune 清理过时引用
  • 为 worktree 目录取描述性名称,以匹配其分支用途
  • 切勿在两个 worktree 中同时检出同一分支

平台兼容性

平台支持情况备注
Cursor完全支持best-of-n-runner 原生使用 worktree
VS Code完全支持支持多根工作区
Windsurf完全支持基于 Shell 管理 worktree
Claude Code完全支持可直接访问 git
Cline完全支持通过终端执行 git 命令
aider完全支持可在任意 worktree 目录中运行

相关技能

关键词

git-worktrees parallel-development isolated-workspace clean-baseline concurrent-branches subagent-isolation best-of-n branch-management


© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License

评论

支持 Markdown