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,你会爱上这个功能。