
上一篇发了《无招胜有招》后,私信最高频的问题是:“Boris 说他同时开十几个 Claude 干活,这怎么实现的?我试了一下,开多个终端窗口,结果几个 Claude 都在同一个项目文件夹里乱改代码,全冲突了啊!”
这确实是个好问题,传统方式同时跑多个 Claude 实例,会遇到这些坑:代码冲突、改动互相覆盖、回滚困难,某个 Claude 改崩了想回滚,结果把另一个 Claude 的正确改动也撤掉了
那 Boris 是怎么做到“同时开十几个 Claude 还井然有序”的?答案是 Git Worktree,这个功能藏在 Git 里好多年了,但很少有人用!直到 Vibe Coding 时代,它的价值才真正爆发:
❝让你在同一个仓库里同时运行多个“平行宇宙”,每个 Claude 在自己的宇宙里折腾,互不干扰
今天就来拆解一下这个被严重低估的 Git 原生功能
简单说,Worktree 让你在同一个代码仓库里,同时打开多个分支到不同文件夹。传统 git checkout 只能“变身”,而Worktree 让你“分身”
在 AI 辅助编程时代,你经常需要这样:让 AI 大胆尝试方案 A,同时你手写方案 B;紧急修 bug 时不想打断主线开发;同时跑多个实验,肉眼对比哪个效果好
# 查看现有的"分身"
git worktree list
# 创建新的工作区(最常用)
git worktree add ./worktrees/my-app-experiment feature/new-idea
# 边创建新分支边开工作区
git worktree add -b hotfix-urgent ./worktrees/my-app-hotfix
# 删除工作区
git worktree remove ./worktrees/my-app-experiment
# 清理已删除的工作区记录
git worktree prune
我现在的项目结构是这样的:
~/projects/my-saas/ # 主仓库,main 分支
~/projects/my-saas/worktrees/my-saas-ai/ # AI 实验区
~/projects/my-saas/worktrees/my-saas-hotfix/ # 紧急修复专用
三个文件夹,三个 VS Code 窗口,互不干扰。说到这,我突然想起上周遇到的一个场景
你有没有遇到过这种情况:想让 AI 大胆重构一段代码,但又怕它改出幺蛾子。以前我总是小心翼翼,生怕 AI 把代码改崩,现在你可以这样做:
# 主仓库
~/projects/my-app/ # 稳定开发,代码靠谱
# 给 AI 开个实验场
git worktree add ./worktrees/my-app-ai experiment/ai-refactor
# 现在
# 左边屏幕:你在主仓库继续写代码
# 右边屏幕:让 Claude 在实验区大胆重构
操作很简单:主仓库继续开发核心功能,不动;打开第二个终端,进入 AI 实验区;跟 Claude 说:“帮我重构这段代码,尽管折腾”;AI 改得好就 git merge,改崩了就直接删文件夹
这就像给 AI 一个沙盒,让 Ta 随便玩,反正玩坏了也不会拆家。有了独立实验场,AI 可以放飞自我,大不了实验失败直接炸掉,主仓库一点不受影响
有次我遇到个棘手的性能优化问题,不确定哪种方案最好,想让 AI 同时试三种方案:
# 主仓库
~/dev/my-app/
# 方案 A:优化数据库查询
git worktree add ./worktrees/my-app-solution-a exp/db-optimize
# 方案 B:加缓存
git worktree add ./worktrees/my-app-solution-b exp/add-cache
# 方案 C:改算法
git worktree add ./worktrees/my-app-solution-c exp/new-algorithm
每个 worktree 跑独立的开发服务器,端口 3000、3001、3002。浏览器开三个窗口,同时对比页面加载速度,最快的方案胜出,其他两个直接删除;这样就可以“并行实验”,大幅提升决策效率。
正写代码突然要修 bug,Worktree 的解决方案也优雅到飞起:
# 你正在开发新功能
~/dev/app/ # feature/new-ui 分支
# 突然要修紧急 bug
git worktree add ../app-hotfix hotfix/critical-bug
cd ../app-hotfix
# 修 bug、提交、推送
git commit -m "fix: 修复崩溃问题"
git push
# 回到主仓库
cd ~/dev/app/
# 你的 npm run dev 还在跑,代码一点没动
以前切分支就像“灵魂出窍”,现在是“肉身分离”。主仓库的开发服务器不用重启,AI 对话上下文不会丢,心流完全不被打断
每个 worktree 默认是独立依赖的,如果想共享(不推荐,容易冲突):
ln -s ~/projects/app/node_modules ~/projects/worktrees/app-ai/node_modules
更好的方案:用 pnpm,pnpm install 会自动共享依赖,省空间又快。我见过有人开了 5 个 worktree,每个都装一遍 node_modules,硬盘直接爆满
Worktrees 共享同一个 Git 数据库,如果在两个 worktree 同时改同一文件,会产生冲突。建议主仓库做主线开发,实验区做孤立实验,各管各的,井水不犯河水
别让实验分支堆成山,定期清理:
git worktree list # 看看有哪些
git worktree remove ./worktrees/app-ai-old
git branch -d experiment/old-idea
git worktree prune # 清理已删除的记录
主仓库(稳定开发,心流专注)
↓
worktrees
├─ ai-experiment:让 AI 大胆尝试
├─ backup-solution:备用方案验证
├─ hotfix:紧急修复通道
└─ code-review:审查别人代码专用
.gitignore
worktrees/
每个 worktree = 独立 VS Code 窗口 + 独立开发服务器
在多个"平行宇宙"里自由穿梭, .gitignore 添加忽略 worktrees 目录
worktree 本质上解决的是“上下文切换成本”的问题。以前切分支就像在不同角色间切换,每次切换都要“入戏”一段时间,现在有了 worktree,就像开了多个游戏账号,想玩哪个玩哪个
在 AI 辅助编程时代,这个特性尤其有用:AI 需要“试错空间”,你需要“稳定输出”;你想“并行探索”,而不是“串行等待”;你希望“心流不断”,而不是“频繁中断”
如果代码仓库也能像《黑客帝国》里那样,同时运行多个模拟现实,你会怎么用它?我的答案是:让 AI 在模拟世界里疯狂实验,我在真实世界里稳健前进。毕竟,最好的创新往往来自“有保护的冒险”