最容易混乱的场景,是你还在改首页,又让 Codex 顺手写帮助文档。最后一个 diff 里既有旧工作,也有新任务,检查和上线都不好分。我的做法是先记录起点,再给新任务一个独立目录和分支。
这篇以手动创建 Git worktree 为例。练习在 macOS、Git 2.50.1 的临时仓库完成:原目录保留一段未提交文字,新目录只接收已提交基线;新任务提交之后,再检查它的分支范围。没有运行模型任务,也没有把这个 Git 实验当作 Codex 桌面端 Handoff 实测。
1. 先看现场,别急着清空
在原仓库执行:
bash
git status --short
git branch --show-current
git worktree list
先回答两个问题:哪些文件是之前就在改的?新任务需不需要那些变化?
如果不依赖未提交的首页改动,就可以从当前 HEAD 提交另开目录。它是当前分支已经提交的起点,并不自动代表最新线上版本。如果任务要求从最新主线开始,应先获取并确认团队实际使用的远程主分支。
2. 一项任务,一个目录和分支
bash
git worktree add -b codex/docs-task ../project-codex HEAD
cd ../project-codex
git status --short
codex
目录名和分支名只是示例,目标不能已经存在。手动执行这条 Git 命令时,原目录未提交的改动不会被自动带过去。进入新目录后,再把具体任务交给 Codex。
我会在任务里补上范围,例如:"只补帮助文档和必要入口,不改首页样式;按项目的 AGENTS.md 运行相关检查;交接时给出文件列表和实际结果。"
3. 文件分开了,运行环境仍要检查
新目录里可能没有 node_modules、本地配置和其他被 Git 忽略的文件。先读项目说明,再准备运行环境。两个开发服务器也需要不同端口。
worktree 不能替你隔离数据库、账号或远程服务。两个目录若连接同一个测试数据库,写入仍可能互相影响。这个问题要在任务开始前说清楚。
Codex 桌面端也有 Worktree 路线,但它与手动 Git 命令的行为不能混写。桌面端的托管 worktree 可选择带本地变化的起点,并有 Handoff 和本地环境设置;具体界面以当前官方说明为准。
4. 验收时比较分支,不能只看工作区干净
假设任务基线确实是本地 main:
bash
git status --short
git diff --check
git diff --cached --check
git log --oneline main..HEAD
git diff --stat main...HEAD
git diff main...HEAD
这里分别看未提交变化、格式问题和分支提交范围。若实际起点不是 main,就换成记录下来的基线。新文件还要通过 status 检查;"没有未提交变化"并不能说明分支只有本次任务。
然后运行项目规定的检查,走一遍相关用户路径,再提交独立 PR。合并不等于已经部署,部署后还要从正式地址确认。
5. 回收前先确认保存位置
停止这个目录启动的服务,确认改动已提交并有可靠保存位置,再检查未跟踪文件和仍要保留的本地配置。从原仓库执行普通的 git worktree remove ../project-codex;如果 Git 拒绝,先看原因。分支是否删除要另行判断。
我把创建、环境准备、合并前检查和回收步骤整理在 Codex Git worktree 实操清单,方便按步骤核对。
资料: OpenAI Worktrees、Git git-worktree。本文练习和检查顺序为独立整理。