返回术语

工程与协作

工作树Worktree

你可能会问

工作树到底是什么?有了分支,为什么还需要它?

简单来说

让同一个仓库的多条分支各占一个独立目录,可以同时打开、并行修改。

动态说明一条分支一个目录,同时开工Worktree
一个工位,还是各有工位
历史共用一份,现场各占一个
分支隔离了历史,但一个目录同一时刻只能站在一条分支上。Worktree 让多条分支各占一个目录:你改你的,Agent 改它的,历史共用一份。

01 · 先这样理解

把抽象概念放进真实场景

让同一个仓库的多条分支各占一个独立目录,可以同时打开、并行修改。

换个角度想

Worktree 像商场的多间试衣间:衣柜(仓库历史)只有一个,但每间试衣间各试各的搭配。不必把身上这套脱下来收好,才能去试下一套。

02 · 点击演示

你和 Agent 同时要改代码,一个目录够用吗?

突出显示的部分,就是当前概念在整条流程中负责的位置。

  1. 这一步不存在——
    所有分支挤在同一个目录里轮流上

    git worktree add ../fix-login

    仓库旁多出一个目录,检出 fix-login 分支

    当前步骤
  2. 同一个目录

    重构改到一半

    Agent也要在这改 · 排队等

    两个目录 · 各站一条分支

    主目录你 · 继续重构

    ../fix-loginAgent · 放手修 bug

    等待进入
  3. 想让 Agent 先上,得先收拾现场

    藏起半成品、切分支,它改完再换回来

    两边同时改、同时跑测试

    文件互不可见,提交都进同一份历史

    等待进入
  4. 并行变串行两个任务轮流占用一个目录,切来切去藏起来的半成品,总有一次忘了取回
    合并后一删就净fix-login 合回主线,工作树目录移除历史都在仓库里,目录只是工位
    等待进入
1 / 4

Add · 为另一条分支开出新目录

03 · 放进真实任务

什么时候会遇到它

Agent 的隔离工位

让 Agent 在自己的工作树里干活,你的目录不会被它动一个字节。

多任务真并行

重构、修 bug、试方案各占一个目录,切换任务就是切换窗口。

新旧对照

两个目录分别检出改动前后,同一时刻左右并排跑起来对比。

04 · 想一想

用一个问题检查理解

你让两个 Agent 同时开工:一个修登录 bug,一个重构支付页。它们共用一个项目目录,会发生什么?

查看答案

两个 Agent 会互相覆盖对方正在改的文件,跑测试也会互相污染,结果谁都交不了活。给每个 Agent 各开一个工作树、各站一条分支:文件彻底隔离,历史仍是同一份,改完各自出 PR 合回主线。

老师提醒

最容易踩的坑

工作树是独立目录:依赖要各装一份、环境要各配一份,开工位有成本。用完就删,别攒一堆忘了哪条分支还没合。

⌘K搜索知识库

最近收录

正在载入知识索引…