Git Worktree
什么是 Git Worktree
git worktree 是 Git 提供的多工作目录功能。它允许你基于同一个仓库,在不同目录中同时检出多个分支,而不需要重复克隆仓库。
这个功能很适合下面几种场景:
- 一个目录开发主线功能
- 另一个目录紧急修复 bug
- 同时查看不同分支的代码差异
- 减少重复克隆仓库带来的磁盘占用
为什么值得用
传统做法里,如果你想同时处理多个分支,通常只能反复 git checkout,或者再克隆一份仓库。前者容易打断当前工作,后者又比较浪费空间。
git worktree 的优势在于:
- 多个分支可以并行开发
- 共用同一个
.git数据库 - 切换任务更直接
- 适合 feature、hotfix、review 等并行场景
常用命令
查看当前 worktree:
1 | git worktree list |
新增一个工作目录并切到新分支:
1 | git worktree add ../appv2 -b main_v2 |
如果 main_test 分支已经存在,也可以直接检出:
1 | git worktree add ../appv2 main_test |
删除一个不再需要的工作目录:
1 | git worktree remove ../blog-feature |
注意:该操作不会删除分支!
如果我们直接删除文件,Git 仓库里仍然“记得”这个 worktree。
使用 git worktree list 能看到 (prunable) 标志
这时候需要清理失效记录:
1 | git worktree prune |
一个简单示例
假设你当前在主仓库目录开发新功能:
1 | cd myrepo |
这时临时来了一个线上修复任务,可以直接创建新的 worktree:
1 | git worktree add ../myrepo-hotfix -b login-error |
这样你就会得到两个互不干扰的目录:
1 | myrepo/ |
你可以在 myrepo/ 继续开发原功能,在 myrepo-hotfix/ 单独处理紧急修复。
开发完成后先 合并 回去再进行 清理
- 删除 worktree
1 | git worktree remove../myrepo-hotfix |
- 删除分支(如果不需要)
1 | git git branch -d login-error |
- 清理残留引用
1 | git worktree prune |
注意事项
- 同一个分支不能同时被多个 worktree 检出
- 删除 worktree 前,先确认里面没有未提交内容
- 某些 IDE 会把每个 worktree 识别为单独项目
- 使用完成后可以及时清理不用的目录
总结
git worktree 很适合需要并行处理多个分支的开发场景。相比重复克隆仓库,它更轻量;相比来回切换分支,它更稳定直接。对经常处理 feature、hotfix 和代码 review 的场景来说,这个命令非常实用。
- 标题: Git Worktree
- 作者: PointY
- 创建于 : 2026-04-02 22:05:00
- 更新于 : 2026-07-14 14:56:18
- 链接: https://siyuhong.github.io/2026/04/02/git-worktree/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论