多工作区是什么
多工作区让同一个仓库同时在多个目录里检出,各自处于不同分支,共享同一份对象库与配置。需要并行处理多个分支时,不必重复克隆,也不用反复切换分支打断编辑器的索引;临时插入一个线上问题的修复,尤其顺手。
基本信息
| 添加 | 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 | 清理失效登记 | 手工删除目录之后使用 |
同一个分支不能在两处同时检出,这是为了避免互相覆盖。临时目录建议放在仓库之外的平级目录,方便一并清理。
多个工作区共享对象库与部分配置,钩子、稀疏检出这类设置的差异要心里有数,别以为在里面改动就全局生效。
工作区维护要点
- 临时工作区用完就移除,避免磁盘上残留多份检出
- 移除之前确认没有未提交的改动,必要时先提交或暂存
- 把工作区放在仓库之外的平级目录,方便集中清理
- 定期查看工作区列表,清掉已经失效的登记