Git Worktree 原理与实战
Cursor 2.0 的多 Agent 模式引入了 Git Worktree 来实现并行任务处理。初次接触时,这个概念略显抽象,但深入理解后你会发现它在多任务并行场景下非常实用。
核心机制
Worktree 允许你在同一个 Git 仓库中维护多个独立的工作目录。这些目录共享底层的 .git/objects,但各自拥有独立的 HEAD、index 和工作区文件。这解决了传统开发中频繁切换分支带来的环境重置问题。
想象一下这样的场景:你正在开发 feature/login 分支,突然需要修复 release/1.5 的紧急 Bug。传统做法要么 stash 当前改动切分支,要么再 clone 一个仓库。前者容易丢失上下文,后者浪费磁盘和索引时间。

使用 Worktree,你可以直接在项目根目录下创建一个新的工作目录:
git worktree add ../hotfix-1.5 release/1.5
这条命令会在上级目录创建 hotfix-1.5 文件夹,检出 release/1.5 分支。你可以在新目录修完 Bug 并提交推送,然后回到原目录继续开发,全程无需切换分支或操作 stash。

常见应用场景
历史版本验证
如果需要复现几个月前的 Bug,或者验证某个提交是否包含特定修复,直接切回旧分支会替换当前工作区的文件。此时用 --detach 参数创建一个临时工作目录更合适:
git worktree add --detach ../temp-check 4f1e2c3
这会进入分离头指针状态,不关联任何分支。测试验证完成后,直接删除该目录即可,原工作区完全不受影响。
代码评审辅助
本地验证 PR 时,不再需要拉取到当前分支或创建临时分支。直接为 PR 创建 Worktree,跑通测试确认效果后再清理,流程更加清爽。

避坑指南
虽然 Worktree 很强大,但使用时仍需注意几个限制和清理规范。
分支独占性
同一个分支不能同时在多个 Worktree 中检出。如果已在某处检出 main 分支,尝试在另一处检出相同分支会报错:branch 'main' already checked out。这是因为 Git 需要保证同一时刻分支只有一个 HEAD 指针。如需多处查看同一提交,可使用 --detach 或创建指向同一提交的分支别名。



