一个让开发者疯狂的场景
你正在开发一个新功能,代码写到一半。
突然,产品经理跑过来:
“紧急 Bug!线上用户反馈支付失败,赶紧修!”
你的选择:
方案 A:暴力切换
git stash保存当前工作git checkout main切换到主分支- 修 Bug
git stash pop恢复之前的工作
方案 B:重新克隆
- 再克隆一个仓库到另一个目录
- 在新目录里修 Bug
- 浪费磁盘空间,浪费时间
方案 C:Git Worktree
git worktree add ../hotfix main- 在新目录里修 Bug
- 原目录的工作完全不受影响
Claude Code 现在内置了方案 C。
而且,它不需要你手动敲命令。
什么是 Git Worktree?
Git Worktree 是 Git 的一个”隐藏功能”。
它允许你在同一个仓库下,同时检出多个分支到不同的目录。
传统方式的痛点
假设你的项目结构是这样的:
~/projects/my-app/
├── src/
├── package.json
└── .git/
你正在 feature/new-ui 分支上开发。
突然需要切换到 main 分支修 Bug。
传统方式:
git stash保存当前工作git checkout main切换分支- 修 Bug
git checkout feature/new-ui切回来git stash pop恢复工作
问题:
- 每次切换都要重新编译
- 每次切换都要重新安装依赖
- 每次切换都要重新启动开发服务器
- 容易忘记
stash,导致代码丢失
Git Worktree 的解决方案
使用 Git Worktree,你的项目结构变成这样:
~/projects/
├── my-app/ # 主工作目录(feature/new-ui 分支)
│ ├── src/
│ ├── package.json
│ └── .git/
└── my-app-hotfix/ # Worktree(main 分支)
├── src/
├── package.json
└── .git -> ../my-app/.git/worktrees/hotfix/
优势:
- 两个目录,两个分支,互不干扰
- 可以同时运行两个开发服务器
- 可以同时打开两个 IDE 窗口
- 共享同一个
.git目录,节省磁盘空间
Claude Code 如何集成 Git Worktree?
Claude Code 的集成非常智能。
1. 自动识别场景
当你告诉 Claude Code:
“我需要修一个紧急 Bug,但不想影响当前的工作。”
它会自动:
- 识别你需要创建一个新的 Worktree
- 询问你要基于哪个分支
- 自动创建 Worktree
- 在新的 Worktree 中打开项目
2. 智能命名
Claude Code 会根据你的任务自动命名 Worktree:
- 修 Bug →
my-app-hotfix-payment - 新功能 →
my-app-feature-dark-mode - 代码审查 →
my-app-review-pr-123
3. 自动清理
当你完成任务后,Claude Code 会:
- 检测 Worktree 是否还有未提交的更改
- 提醒你是否要删除 Worktree
- 自动执行
git worktree remove
实际使用场景
场景 1:紧急 Bug 修复
传统方式:
# 1. 保存当前工作
git stash
# 2. 切换到主分支
git checkout main
# 3. 创建修复分支
git checkout -b hotfix/payment-bug
# 4. 修复 Bug
# ...
# 5. 提交并推送
git add .
git commit -m "Fix payment bug"
git push
# 6. 切回原分支
git checkout feature/new-ui
# 7. 恢复工作
git stash pop
Claude Code + Worktree:
你只需要说:
“帮我修一个支付 Bug,基于 main 分支。”
Claude Code 自动:
- 创建 Worktree:
git worktree add ../my-app-hotfix main - 在新目录中创建分支:
git checkout -b hotfix/payment-bug - 打开新的编辑器窗口
- 你在新窗口中修 Bug,原窗口的工作完全不受影响
场景 2:代码审查
传统方式:
# 1. 保存当前工作
git stash
# 2. 拉取 PR 分支
git fetch origin pull/123/head:pr-123
git checkout pr-123
# 3. 审查代码
# ...
# 4. 切回原分支
git checkout feature/new-ui
# 5. 恢复工作
git stash pop
Claude Code + Worktree:
你只需要说:
“帮我审查 PR #123。”
Claude Code 自动:
- 创建 Worktree:
git worktree add ../my-app-review-pr-123 - 拉取 PR 分支:
git fetch origin pull/123/head:pr-123 - 切换到 PR 分支:
git checkout pr-123 - 打开新的编辑器窗口
- 你在新窗口中审查代码,原窗口的工作完全不受影响
场景 3:多版本测试
传统方式:
你需要测试三个不同版本的代码:
main分支(生产环境)staging分支(预发布环境)feature/new-ui分支(开发环境)
你需要:
- 克隆三个仓库
- 分别安装依赖
- 分别启动开发服务器
Claude Code + Worktree:
你只需要说:
“帮我同时测试 main、staging 和 feature/new-ui 三个分支。”
Claude Code 自动:
- 创建三个 Worktree
- 在每个 Worktree 中安装依赖
- 在不同端口启动三个开发服务器
- 你可以同时在三个浏览器窗口中测试
场景 4:实验性功能
传统方式:
你想尝试一个实验性功能,但不确定是否会采用。
你需要:
- 创建一个新分支
- 写代码
- 如果不采用,删除分支
Claude Code + Worktree:
你只需要说:
“帮我创建一个实验性分支,试试用 WebAssembly 重写这个模块。”
Claude Code 自动:
- 创建 Worktree:
git worktree add ../my-app-experiment-wasm - 创建实验分支:
git checkout -b experiment/wasm-module - 打开新的编辑器窗口
- 你在新窗口中实验,原窗口的工作完全不受影响
- 如果实验失败,直接删除 Worktree,不影响主分支
为什么 Git Worktree 这么强大?
1. 节省磁盘空间
传统方式:克隆多个仓库
~/projects/
├── my-app/ # 500 MB
├── my-app-hotfix/ # 500 MB
└── my-app-review/ # 500 MB
总共:1.5 GB
Git Worktree:共享 .git 目录
~/projects/
├── my-app/ # 500 MB(包含 .git)
├── my-app-hotfix/ # 50 MB(只有工作目录)
└── my-app-review/ # 50 MB(只有工作目录)
总共:600 MB
节省:60%
2. 节省时间
传统方式:每次切换分支
git checkout main # 5 秒
npm install # 30 秒
npm run dev # 10 秒
总共:45 秒
Git Worktree:一次性创建
git worktree add ../my-app-hotfix main # 2 秒
cd ../my-app-hotfix # 1 秒
npm install # 30 秒
npm run dev # 10 秒
总共:43 秒
但是:
之后每次切换,只需要:
- 切换编辑器窗口:1 秒
- 切换浏览器窗口:1 秒
总共:2 秒
节省:95%
3. 避免错误
传统方式:容易忘记 stash
git checkout main # 忘记 stash
error: Your local changes to the following files would be overwritten by checkout:
src/App.js
Please commit your changes or stash them before you switch branches.
Git Worktree:完全隔离
# 在 my-app/ 目录中
git status
On branch feature/new-ui
Changes not staged for commit:
modified: src/App.js
# 在 my-app-hotfix/ 目录中
git status
On branch main
nothing to commit, working tree clean
完全不会冲突。
Claude Code 的智能优化
1. 自动检测依赖
当你创建一个新的 Worktree 时,Claude Code 会:
- 检测
package.json是否存在 - 自动运行
npm install或yarn install - 检测
.env文件是否存在 - 自动复制
.env文件到新的 Worktree
2. 自动启动服务
Claude Code 会:
- 检测
package.json中的scripts - 自动运行
npm run dev或yarn dev - 自动分配不同的端口(避免冲突)
3. 自动同步配置
Claude Code 会:
- 检测
.vscode/目录 - 自动复制配置到新的 Worktree
- 保持编辑器配置一致
4. 自动清理
当你完成任务后,Claude Code 会:
- 检测 Worktree 是否还有未提交的更改
- 提醒你是否要删除 Worktree
- 自动执行
git worktree remove - 自动删除本地分支(如果已经合并)
与其他工具的对比
VS Code
VS Code 也支持 Git Worktree,但需要:
- 手动安装插件
- 手动创建 Worktree
- 手动打开新窗口
Cursor
Cursor 支持 Git Worktree,但:
- 需要手动创建 Worktree
- 不会自动安装依赖
- 不会自动启动服务
Claude Code
Claude Code 的优势:
- 原生支持:不需要安装插件
- 智能识别:自动识别场景
- 自动化:自动创建、安装、启动、清理
- 对话式:用自然语言描述需求即可
实战技巧
技巧 1:为不同任务创建不同的 Worktree
~/projects/
├── my-app/ # 主开发分支
├── my-app-hotfix/ # 紧急修复
├── my-app-review-pr-123/ # 代码审查
├── my-app-experiment-wasm/ # 实验性功能
└── my-app-refactor-api/ # 重构任务
技巧 2:使用不同的端口
# my-app/
npm run dev -- --port 3000
# my-app-hotfix/
npm run dev -- --port 3001
# my-app-review-pr-123/
npm run dev -- --port 3002
技巧 3:使用不同的数据库
# my-app/.env
DATABASE_URL=postgresql://localhost:5432/myapp_dev
# my-app-hotfix/.env
DATABASE_URL=postgresql://localhost:5432/myapp_hotfix
# my-app-experiment-wasm/.env
DATABASE_URL=postgresql://localhost:5432/myapp_experiment
技巧 4:定期清理
# 列出所有 Worktree
git worktree list
# 删除已经合并的 Worktree
git worktree prune
结语
Git Worktree 是一个被严重低估的功能。
它解决了开发者最常见的痛点:
- 频繁切换分支
- 紧急任务打断
- 多版本测试
- 实验性功能
Claude Code 的原生支持,让这个功能变得更加易用。
你不需要记住复杂的命令。
你不需要手动创建目录。
你不需要手动安装依赖。
你只需要告诉 Claude Code 你想做什么,它会帮你搞定一切。
这就是 AI 编程助手的真正价值:
不是替你写代码,而是让你更高效地写代码。
如果你还在用 git stash 和 git checkout 来切换分支,试试 Git Worktree 吧。
如果你还在手动创建 Worktree,试试 Claude Code 吧。
你会发现,开发效率提升的不是一点点。