术语 · 工程与协作

工作树

Worktree

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

一条分支一个目录,同时开工

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

换个角度想

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

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

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

    git worktree add ../fix-login

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

  2. 同一个目录

    你重构改到一半

    Agent也要在这改 · 排队等

    两个目录 · 各站一条分支

    主目录你 · 继续重构

    ../fix-loginAgent · 放手修 bug

  3. 想让 Agent 先上,得先收拾现场

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

    两边同时改、同时跑测试

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

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

为另一条分支开出新目录

什么时候会遇到它

  1. Agent 的隔离工位

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

  2. 多任务真并行

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

  3. 新旧对照

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

想一想

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

看答案

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

最容易踩的坑

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

⌘K搜索知识库

最近收录

正在载入知识索引…