Git Worktree

PointY Lv2

什么是 Git Worktree

git worktree 是 Git 提供的多工作目录功能。它允许你基于同一个仓库,在不同目录中同时检出多个分支,而不需要重复克隆仓库。

这个功能很适合下面几种场景:

  • 一个目录开发主线功能
  • 另一个目录紧急修复 bug
  • 同时查看不同分支的代码差异
  • 减少重复克隆仓库带来的磁盘占用

为什么值得用

传统做法里,如果你想同时处理多个分支,通常只能反复 git checkout,或者再克隆一份仓库。前者容易打断当前工作,后者又比较浪费空间。

git worktree 的优势在于:

  • 多个分支可以并行开发
  • 共用同一个 .git 数据库
  • 切换任务更直接
  • 适合 feature、hotfix、review 等并行场景

常用命令

查看当前 worktree:

1
git worktree list

新增一个工作目录并切到新分支:

1
2
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
2
cd myrepo
git switch main

这时临时来了一个线上修复任务,可以直接创建新的 worktree:

1
git worktree add ../myrepo-hotfix -b login-error

这样你就会得到两个互不干扰的目录:

1
2
myrepo/
myrepo-hotfix/

你可以在 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 进行许可。
评论