是什么
Worktree 是什么
Worktree 是同一个 Git 仓库的另一份 checkout。每个 Worktree 有独立的文件目录、索引和工作状态,但共享 commits、branches 等 Git 元数据。它适合隔离并行任务,不是虚拟机,也不是安全沙箱。
官方事实:Codex Desktop 使用 Git worktrees 支持同一项目中的独立任务,并提供 Local 与 Worktree 之间的 Hand off。完整产品行为见 (外部链接)OpenAI Worktrees。
何时使用
什么时候用 / 不用
- 适合并行功能、试验性改动、后台任务,或 Local 已有未完成修改时。
- 优先 Local单文件小修、需要复用当前开发服务器、只能启动一个应用实例,或必须频繁人工调试时。
- 不要并行多个任务会修改同一 schema、共享 contract 或同一核心文件时,先拆依赖再创建 Worktree。
- 前置条件项目必须位于 Git 仓库中;非 Git 项目不能创建 Worktree。
Desktop 操作 · 已选择 Worktree
在 Desktop 中创建
1. 选择 Worktree
新建任务时,在输入框下方选择 Worktree。如项目配置了 Local environment(运行 setup scripts 的本地环境配置),可同时选择它;它不是 Local 前台/主 Worktree(main worktree),后者是当前打开的目录。
2. 选择起始分支
选择 main / master、功能分支,或当前含未提交修改的分支。Codex 以所选分支的 HEAD 为基线,并可把选中的本地未提交修改应用到新 Worktree。
3. 提交独立任务
写清目标、允许修改的文件、禁止触碰的范围和验证命令。Codex 创建 managed Worktree;detached HEAD 表示暂时直接停在某个提交上、没有绑定分支名,不会先污染分支列表;若要长期保留成果,再选择 Create branch here。
4. 决定继续位置
验证环境完整时可继续留在 Worktree;需要日常 IDE、现有服务器或人工联调时,通过 Hand off 移回 Local。
交接
Local、Worktree 与 Hand off
Create branch here在该目录验证、commit、push 和创建 PR该分支不能同时在 Local checkoutHand offCodex 处理两个 checkout 间必要的 Git 操作适合复用 IDE、服务器和本地调试状态Hand off任务回到原先关联的 Worktree继续保留该任务的后台环境边界
分支和文件边界
同一分支不能多处 checkout
Git 不允许同一分支同时被多个 Worktree checkout。若准备在 Local 接管,不要手动抢占该分支;优先使用 Hand off,或先让原 Worktree 切到其他分支。
Ignored 文件与 .worktreeinclude
被 .gitignore 忽略的文件不会自然出现在新 checkout。Codex managed Worktree 可通过仓库根目录的 .worktreeinclude 复制必要文件;只列运行所需项,并谨慎对待 .env、密钥和本地配置。
# .worktreeinclude
.env.local
config/local.json不是安全沙箱:Worktree 仍可能共享 credentials、Git 元数据、后台进程、端口、数据库和外部服务。目录隔离不能替代权限控制、互斥写域或服务级隔离。
生命周期
恢复与清理
- Managed Worktree通常服务于单个任务,适合轻量、可回收的后台工作。
- Permanent Worktree从项目菜单创建为长期项目,不会因归档关联任务而自动删除。
- 自动清理Codex 默认保留最近 15 个 managed Worktrees;可在 Settings → Worktrees 调整数量或关闭自动删除。
- 恢复删除 managed Worktree 前会保存快照;以后打开关联任务时可以恢复。
Worktree 会 checkout 已跟踪文件;被忽略或未跟踪的依赖目录、构建缓存和下载资产不会自动出现,需按项目规则准备。若多个 Worktree 各自生成或下载这些文件,磁盘占用仍可能增长。任务结束后确认分支、PR、验证证据和未提交改动都已妥善保存,再归档或清理。
协作关系
Worktree 与 Subagent 的区别
Subagent 的委派合同、推荐拆法和收口规则见 Subagents;按依赖建立并行 lane 的方法见 Issue lanes。
可复制 · Desktop Worktree 已选
可复制示例(已选择 Desktop Worktree)
请在独立 Worktree 中完成这个任务,不要影响当前 Local 工作区。
Base: 当前 main 的最新提交。
Goal: 修复首页卡片布局并补浏览器回归测试。
Writable scope: index.html、assets/site.css、对应测试。
Forbidden: 其他页面、远程 push、合并主分支。
Validation: 静态检查 + desktop/mobile 浏览器测试。
Hand off: 完成后返回 changed files、测试证据和未验证项;
需要复用 Local 开发服务器时先停止并建议 Hand off。真实实例
真实实例:并行页面修复
场景:Local 正在修改主题控件,同时另一项任务需要重写 Worktree 文档页。两项改动依赖不同文件,可以把文档任务放到独立 Worktree,保留 Local 的未提交主题修改。