前言:
现在 vibecoding 在生成代码中都会出现一个模式叫 Git Worktree 工作树模式,之前一直使用 Git 竟然还不知道这个东西,最近在抖音刷到后又在现在用的一些 AI 工具里了解了下发现还挺有用的。(╹ڡ╹ )
1. 什么是Git Worktree
Git Worktree(工作树)是 Git 提供的一项功能,它允许你在同一个仓库中同时检出多个工作目录。每个工作树都关联到同一个 Git 仓库,但可以各自检出不同的分支,互不干扰。
简单来说,普通情况下一个 Git 仓库只有一个工作目录(也就是你当前所在的目录),而 Worktree 可以让你在另一个目录中再检出一个分支,两个目录可以同时工作、同时修改,各自提交,互不影响。
它和 Git 的关系可以这样理解:Git 本身负责版本管理,而 Worktree 是 Git 提供的一种多工作区管理能力,让你在同一个仓库下并行处理多个任务,而不需要频繁切换分支或克隆多份仓库。
2. 创建使用Git Worktree
创建和使用 Git Worktree 非常简单,核心命令就是 git worktree add。下面介绍几种常见的创建方式。
2.1 基于已有分支创建
如果你想在另一个目录中检出当前仓库已有的某个分支,可以使用下面的命令:
bash
git worktree add ../my-feature feature-branch
这条命令会在 ../my-feature 目录下创建一个新的工作树,并检出 feature-branch 分支。之后你就可以在这个新目录中独立修改和提交,而不影响主工作目录。
2.2 创建新分支并关联工作树
如果希望基于当前分支创建一个新分支,并同时为它创建工作树,可以加上 -b 参数:
bash
git worktree add -b new-feature ../new-feature
这条命令会新建一个名为 new-feature 的分支,并在 ../new-feature 目录下创建对应的工作树,一步到位。
2.3 查看和管理工作树
使用 git worktree list 可以查看当前仓库关联的所有工作树及其所在目录和分支:
bash
git worktree list
当某个工作树不再需要时,可以先删除对应目录,再执行 git worktree prune 清理失效记录:
bash
git worktree prune
通过以上命令,你就可以轻松地在同一个仓库下并行管理多个分支的工作区了。
2.4 在TRAE IDE中使用Git Worktree
在 TRAE IDE 中,当你通过界面操作创建或切换 Git Worktree 时,IDE 底层实际触发的是 git worktree add 命令。具体来说,TRAE 会根据你在界面上选择的「基于已有分支创建」还是「创建新分支并关联工作树」,分别执行下面两条命令之一:
bash
git worktree add ../my-feature feature-branch
bash
git worktree add -b new-feature ../new-feature
也就是说,TRAE IDE 的图形化操作本质上是对 git worktree add 命令的封装,底层调用的核心命令与命令行方式完全一致。需要注意的是,每次创建或切换 Worktree 时,只会把你在界面上选中的那一个分支关联到新的工作树,而不会把仓库里的全部分支都关联进来。每个工作树在同一时刻只对应一个分支,其他分支仍然保留在仓库中,需要时再通过 git worktree add 单独创建新的工作树来检出。
在 TRAE IDE 中开发新功能的完整流程
下面结合 TRAE IDE 的界面操作,演示如何用 Git Worktree 在 IDE 中完成一个新功能的完整开发流程。整个过程无需手动敲命令,全部通过图形化界面完成。
第一步:打开工作树管理面板
在 TRAE IDE 中,点击左侧源代码管理(Git)面板,找到工作树(Worktree)相关入口,即可进入工作树管理界面。这里会展示当前仓库已有的工作树列表,以及每个工作树对应的分支和目录。
第二步:创建新分支并关联工作树
在面板中旋转 Git Worktree 模式选项。TRAE 会在底层执行 git worktree add -b feature-login ../feature-login 命令,自动完成分支创建和工作树关联。

第三步:在新工作树中开发功能
创建完成后,就可在当前这个新窗口中,你可以像平时一样编写代码、调试和提交,所有提交都会记录在 feature-login 分支上,而主工作目录中的代码完全不受影响,你可以看到你修改的文件都是在你工作树分支上的文件,主分支的文件不会有任何影响。

第四步:查看工作树状态并合并功能
开发完成后,回到主工作树窗口,在 Git 面板中可以看到当前仓库关联的所有工作树及其分支状态。确认功能开发无误后,即可点击左侧的审查并合并(这个流程包含了向原来的分支合并等多条指令),最后完成整个流程的清理。

这样,通过 TRAE IDE 的图形化界面,你就完成了一个「创建工作树 → 开发功能 → 合并回主分支 → 清理工作树」的完整流程。整个过程无需手动输入 Git 命令,IDE 底层会自动调用对应的 git worktree 命令来完成操作。最后合并完成后系统会建议你新建任务进行处理。

2.5 用 Git Worktree 开发新功能的完整流程
了解了创建和管理工作树的方法和用TRAE IDE使用Worktree 的完整示例后,下面再演示说明如何用 Git 指令中的 Worktree 从零开始开发一个新功能,并在开发完成后合并回主分支。
第一步:创建新分支并关联工作树
假设当前在主分支上,需要开发一个名为「用户登录」的新功能。首先基于主分支创建新分支,并同时为它创建一个独立的工作树目录:
bash
git worktree add -b feature-login ../feature-login
执行后,会在 ../feature-login 目录下创建一个新的工作树,并自动检出新建的 feature-login 分支。此时主工作目录仍然停留在主分支上,互不影响。
第二步:在新工作树中开发功能
进入新工作树目录,像平时一样进行代码编写、调试和提交:
bash
cd ../feature-login
# 编写登录功能代码...
git add .
git commit -m "feat: 实现用户登录功能"
所有提交都记录在 feature-login 分支上,主工作目录中的代码完全不受影响。
第三步:查看工作树状态
开发过程中,可以随时用 git worktree list 查看当前仓库关联的所有工作树及其所在分支:
bash
git worktree list
输出中会同时显示主工作目录和 ../feature-login 两个工作树,方便你确认每个工作树对应的分支。
第四步:合并功能并清理工作树
功能开发并测试完成后,回到主工作目录,把新功能分支合并回主分支:
bash
cd /path/to/main-worktree
git merge feature-login
合并完成后,删除不再需要的功能分支,并清理对应的工作树目录:
bash
git branch -d feature-login
git worktree remove ../feature-login
这样,一个完整的「创建工作树 → 开发功能 → 合并回主分支 → 清理工作树」流程就完成了。整个过程主工作目录始终保持在主分支上,非常适合需要同时维护多个版本或并行开发多个功能的场景。
3. Git Worktree和Git
3.1 Git Worktree和Git分支的区别
Git Worktree 和 Git 分支乍一看感觉二者功能很相似,其实它们是两个不同层面的概念。简单来说,分支是 Git 仓库中的一种引用(指针) ,它指向某一次提交;而 Worktree 是 Git 提供的一种工作区管理能力,它决定你在哪个目录下、基于哪个分支进行实际的文件操作。
下面从几个维度来对比两者的区别:
| 对比维度 | Git 分支 | Git Worktree |
|---|---|---|
| 本质 | 指向某次提交的可移动指针 | 一个独立的工作目录(工作区) |
| 作用对象 | 版本历史中的提交记录 | 磁盘上的文件目录 |
| 是否占用额外目录 | 不占用,分支只是仓库内的引用 | 占用,每个工作树对应一个独立目录 |
| 能否同时检出 | 同一分支只能在一个工作区检出 | 多个工作树可同时检出不同分支 |
| 切换成本 | 需要切换工作区,可能影响未提交改动 | 无需切换,各目录并行工作互不干扰 |
| 典型用途 | 管理不同的开发线、版本迭代 | 并行处理多个任务、多分支同时开发 |
可以这样理解两者的关系:分支决定"改哪条线",Worktree 决定"在哪个目录里改"。一个 Worktree 必须关联某个分支,而一个分支在同一时刻只能被一个工作树检出。Worktree 是建立在分支之上的工作区能力,两者配合使用,才能实现真正意义上的多任务并行开发。
3.2 新功能开发:用分支合并还是用工作树
这是很多开发者都会纠结的问题。其实两者并不冲突,而是适用于不同的场景,关键看你的开发节奏和并行任务的数量。
如果只是开发一个独立的新功能,且不需要同时处理其他任务,那么传统的「创建分支 + 合并分支」就足够了。流程是:从主分支切出一个功能分支,开发完成后合并回主分支,最后删除功能分支。这种方式简单直接,也是大多数团队的标准做法。
如果你需要同时并行开发多个功能,或者想在开发新功能的同时继续维护旧版本、修复线上 Bug,那么 Git Worktree 会更合适。因为每个工作树对应一个独立目录,你可以同时打开多个目录,各自基于不同分支工作,互不干扰,也省去了频繁切换分支带来的上下文切换成本。
简单总结一下选择建议:
- 单任务、节奏清晰:用「创建分支 + 合并分支」,简单可靠,符合团队常规流程。
- 多任务并行、需要同时维护多个版本:用 Git Worktree,每个任务一个独立工作目录,互不干扰。
- 两者可以结合:先用 Worktree 为每个新功能创建独立工作区,开发完成后再走分支合并流程,把功能合回主分支。
所以,新功能开发时并不需要二选一。日常单功能开发用分支合并即可,遇到多任务并行时再引入 Worktree,两者配合使用效果最好。
总结
Git Worktree是很好用的功能可以在新工作树上开发并且老工作树完全不受影响,在多人协作中会经常用到o((>ω< ))o后续我再体验一下TRAE Work中的工作树模式~