Skip to content

25 · Worktrees 并行隔离:让几个 Codex 各干各的,互不打架

当你同时想做两三件事时,最怕的不是 Codex 不会干。 最怕的是几个任务改到同一批文件,最后你不知道哪一处是谁改的。

Worktree 解决的是“并行但隔离”的问题。

Worktrees 并行隔离

先判断:这个任务是否值得开 worktree

不是每个任务都需要 worktree。 满足下面 3 个条件,再考虑开:

  1. 这个任务会改文件。
  2. 它和当前主线任务相互独立。
  3. 改错了也希望能单独撤回。

如果只是改一篇文章、修一句文案,就不用开。

第一次练习:只开一个隔离任务

不要第一次就开三四个 worktree。 先练一个:

text
我想开一个独立 worktree,用来尝试修改一篇教程文章。
请先告诉我:
1. 它会创建在哪里
2. 它对应哪个分支
3. 它会不会影响当前主项目
4. 我最后怎么查看和合并结果

先只解释,不要创建。

你先听懂这 4 件事,再让它动手。

01 先想清楚:Worktree 到底解决什么问题

Worktree 可以理解成:同一个项目,开出几个互不打架的工作区。

适合:

  1. 一个线程改文章。
  2. 一个线程修 bug。
  3. 一个线程试新功能。
  4. 一个线程做安全检查。

不适合:

  1. 只是改一篇文章。
  2. 你还不会看 diff。
  3. 多个任务都要改同一个文件。

02 在桌面 App 里建一个 Worktree 线程

四步建出来

新手可以按这个理解:

  1. 先有一个主项目。
  2. 从主项目开一个隔离线程。
  3. 在隔离线程里让 Codex 干活。
  4. 验证后再决定是否合回主项目。

提示词:

text
我想为这个任务开一个独立 worktree。
请先告诉我它会创建在哪里、对应哪个分支、会不会影响当前主项目。

一个反直觉但关键的事实:worktree 默认可能处在 detached HEAD

这句话小白可以先理解成: 你不一定在一个正常命名分支上。

所以开工前先问:

text
请告诉我当前 worktree 处在哪个分支或状态。
如果是 detached HEAD,请用普通话解释风险。

03 最该吃透的一条铁规:同一分支不能在两处同时检出

这是最重要的规则。

同一个分支不要同时被两个工作区占用。 否则你会遇到各种 Git 提示,甚至搞不清改动在哪。

确认方式:

text
请检查当前项目有哪些 worktree。
告诉我每个 worktree 对应哪个分支。
不要删除任何东西。

04 Handoff:把线程在 Local 和 Worktree 之间双向搬

Handoff 可以理解成把任务从一个环境交接到另一个环境。

比如:

  • 本地做了一半,交给 worktree 继续。
  • worktree 做完,回到本地检查。

交接前要问:

text
这次 handoff 会带走哪些上下文和改动?
有没有未提交文件?
我应该在哪里继续检查?

05 让新 worktree 一建出来就“装备齐全”:Local environment 的 setup 脚本

新 worktree 可能缺依赖。 所以有时需要 setup 脚本。

但小白不要直接跑未知脚本。

text
请先解释这个 setup 脚本会做什么。
会不会安装依赖、联网、修改配置或删除文件?
我确认后再运行。

06 Worktree 攒多了怎么办:清理、上限与快照恢复

Worktree 开多了会乱。

清理前先列清单:

text
请列出当前所有 worktree。
标明:
1. 路径
2. 分支
3. 是否有未提交改动
4. 是否建议保留
不要删除。

有未提交改动,不要直接删。

07 动手:在桌面 App 里跑通一条 Worktree 主链

练习任务:

  1. 为“修改一篇文章”开 worktree。
  2. 只改这一篇。
  3. 看 diff。
  4. 构建检查。
  5. 决定是否合回主线。

提示词:

text
请帮我设计一个 worktree 练习流程。
目标是只修改一篇教程文章。
要求每一步都说明我应该看哪里、确认什么。

08 小结

Worktree 不是给小任务炫技的。 它适合多任务并行、互不干扰。

记住三句话:

  • 小任务不用拆。
  • 同一分支不要两处同时检出。
  • 清理前先看有没有未提交改动。