首页/开发/Git 与协作速查/git worktree 多工作区
进阶与大仓实践69 条

git worktree 多工作区

同一个仓库同时检出多个工作区:在不同目录并行处理多个分支,共享对象库与配置,省去重复克隆与来回切分支。

Git 与协作速查开发更新于 2026-10-13

多工作区是什么

多工作区让同一个仓库同时在多个目录里检出,各自处于不同分支,共享同一份对象库与配置。需要并行处理多个分支时,不必重复克隆,也不用反复切换分支打断编辑器的索引;临时插入一个线上问题的修复,尤其顺手。

基本信息

添加git worktree add <路径> <分支>,加 -b 可同时新建分支
列表git worktree list
移除git worktree remove <路径>
清理记录git worktree prune 处理已失效的登记
共享内容对象库与仓库配置

典型使用场景

  • 正在开发时插入一个紧急修复,不打断当前工作区
  • 同时查看主干与特性分支的表现,不用来回切换
  • 跑长时间测试的同时继续写代码
  • 做对比实验:新旧实现各占一个工作区并行验证
  • 评审他人改动时在一个干净目录里检出核对

常用示例

常用示例
git worktree add ../hotfix -b hotfix/1.2.3 origin/main  # 新建并检出紧急修复分支
git worktree list                                        # 查看全部工作区
git worktree add ../review pr-128                        # 为评审再开一个工作区
git worktree remove ../hotfix                            # 处理完后移除
git worktree prune                                       # 清理已失效的登记

子命令读法

子命令作用说明
add新增工作区可同时新建分支
list列出工作区显示路径与所在分支
remove移除工作区有未提交改动时会被拒绝
prune清理失效登记手工删除目录之后使用
同一个分支不能在两处同时检出,这是为了避免互相覆盖。临时目录建议放在仓库之外的平级目录,方便一并清理。
多个工作区共享对象库与部分配置,钩子、稀疏检出这类设置的差异要心里有数,别以为在里面改动就全局生效。

工作区维护要点

  • 临时工作区用完就移除,避免磁盘上残留多份检出
  • 移除之前确认没有未提交的改动,必要时先提交或暂存
  • 把工作区放在仓库之外的平级目录,方便集中清理
  • 定期查看工作区列表,清掉已经失效的登记

易错点

  • 手工删除工作区目录会留下失效登记,需要用清理子命令处理
  • 多个工作区共享对象库与部分配置,钩子与稀疏检出设置的差异要提前确认
  • 忘记移除临时工作区,磁盘上会残留多份检出,容易在其中误改代码
  • 在临时工作区里提交后直接删除目录,未推送的提交只能靠引用日志或分支名找回,容易误以为已经丢失

数据来源与参考

  • Git 官方文档:git-worktree
  • Pro Git 2nd Edition · 7.x 相关工作区说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌