工作树 Worktree
你要同时修复一个 bug 和继续做新功能,又不想反复切换当前目录里的分支。
Git约 10 分钟 · 从真实需求理解
1Worktree 解决什么问题?
SHARED HISTORY → LINKED FOLDERS,Worktree 让不同分支同时保持在手边。
SHARED REPOSITORYapp/.git
a84c91eone history, shared objects../appclean../ui-refreshM Button.vue
同一历史 · 不同目录 · 各自状态
git worktree listchecking paths…main + feature/ui-refreshWorktree 让一个 Git 仓库同时拥有多个工作目录。每个目录可以检出不同分支,所以你能在一个目录修 bug、另一个目录做新功能,不必先把当前目录的改动藏起来再切换。
- 多个工作目录共享同一仓库历史,不等于复制出多个独立仓库。
- 每棵工作树有自己的路径、分支和工作区状态。
- worktree list 可以检查当前仓库有哪些目录,以及每个目录检出了什么分支。
2Worktree 不等于 Clone、Branch 或普通复制
Clone 通常把远程仓库初始化成一个新的本地副本;Worktree 则在同一个本地仓库旁边增加工作目录。Branch 是历史上的分支指针,Worktree 是让分支实际占用一个目录的工作区关系。
- Worktree 适合并行处理多个分支,改动仍要分别提交、合并或清理。
- 它不是把文件夹复制一份;多个目录共享 Git 对象和仓库关系。
删除或移动链接目录前要确认工作树状态;目录变多也会增加管理和磁盘成本。
3一棵 Worktree 由哪些部件组成?
../appmain../ui-refreshfeature/ui-refresh
Worktree 共享仓库历史,但每个目录拥有自己的检出分支和工作区状态。
把 Worktree 拆开看,仓库历史提供共同基础,主目录和链接目录分别承载不同分支,独立工作区显示各自文件状态,worktree list 则把这些关系列出来。
- REPOSITORY 是多个工作目录共享的本地仓库历史。
- FOLDERS 是实际存在的主目录和链接目录。
- ISOLATION 是每个目录各自检出分支、记录文件状态。
- INVENTORY 是检查路径、分支和当前工作树数量的清单。
4怎样把 Worktree 需求交给 Agent?
请为已有的 app 仓库保留 ../app 的 main 工作目录,再添加 ../ui-refresh 作为 feature/ui-refresh 的 Worktree;在 ui-refresh 里修改 Button.vue,展示 main 目录仍然干净,最后用 git worktree list 列出两个路径和分支。请把 Worktree、Clone、Branch、Stash、Merge 和普通复制目录区分开,支持共享重播、Anatomy 键盘操作、暗色主题和 390px、320px 窄屏。
5不用背,看看你能不能判断
1 / 3
Worktree 最主要解决什么问题?
请选择一个最符合题意的答案
社区延伸
看别人真实遇到过什么
社区帖子还没有关联到这个词条。