Git Worktree 高效多分支开发指南
在日常开发中,我们经常面临这样的场景:正在 A 分支上写代码,突然需要切到 B 分支修一个紧急 bug。这时候要么 stash 当前工作(然后忘记它),要么提交半成品。Git Worktree 优雅解决了这个问题。
什么是 Git Worktree
Git Worktree 允许你在同一仓库中同时检出多个分支,每个分支有独立的工作目录。所有 worktree 共享同一份 .git 对象存储,不会增加仓库体积。
核心命令:
# 创建一个新 worktree
git worktree add ../project-feature feature-branch
# 列出所有 worktree
git worktree list
# 删除 worktree
git worktree remove ../project-feature
# 清理过期 worktree
git worktree prune
核心使用场景
1. 修bug同时继续开发
正在开发新功能时,线上突然报 bug:
# 在当前目录继续开发新功能
# 在新目录检出版本分支修 bug
git worktree add ../hotfix release/v2.1
cd ../hotfix
# 修 bug、commit、push
cd - # 切回原来目录继续开发
整个过程不需要 stash,不需要担心工作丢失。
2. 并行 review
同时 review 多个 PR 时非常方便:
git worktree add ../pr-review-1 pr/feature-a
git worktree add ../pr-review-2 pr/feature-b
git worktree add ../pr-review-3 pr/feature-c
在三个 IDE 窗口打开,互不干扰。
最佳实践
- 命名规范:worktree 目录名用项目名+分支名,如
myapp-feature-x - 磁盘清理:定期执���
git worktree prune清理过期记录 - 避免主 worktree 直接开发:把主检出当作 hub,用子 worktree 开发实际工作
- 自动化脚本:配合 shell alias 快速创建/切换 worktree
与其他方案的对比
| 方案 | 切换速度 | 冲突风险 | 磁盘占用 |
|---|---|---|---|
| git stash | 快 | 高(容易忘) | 低 |
| git clone 新仓库 | 慢 | 无 | 高(重复下载) |
| git worktree | 极快 | 无 | 低(共享对象) |
总结
Git Worktree 是每个开发者都应该掌握的高效技巧。它解决了多分支并行开发的核心痛点,尤其适合需要频繁切分支修 hotfix 的场景。下次遇到切分支需求时,试试 git worktree add,你会爱上这个功能。