前段时间codex Windows app发布了,看见微软商店的介绍里有什么并行worktree之类的,也没找到什么经验分享,所以特地在这里分享一下自己摸索的使用心得。我的使用比较粗糙,欢迎各位佬友一起分享。 官方文档:Worktrees
默认前提:
- 你已经有一个本地以及远程的 Git 仓库
- 你知道 `branch`、`stash`、`commit`、`merge` 的基本含义
- 你当前使用的是和截图相近版本的 Codex Desktop(Windows)
本篇文章涉及的内容
先看懂界面里“当前工作区状态”和“当前分支”这两个位置
创建新的工作树
在工作树里继续对话,并给当前改动创建工作分支
把工作树结果切到本地工作区验证
根据验证结果,决定继续在本地修改,还是把会话移回工作树
选择一种方式把改动合并回目标分支
删除不再需要的工作树
你可以先把它理解成一句话:
先在工作树里做,再切到本地看,确认没问题后再合回主分支。
1. 先认识界面里的关键信息
先看懂界面里最重要的两个位置。
左下角可以看出当前会话是在本地工作区还是工作树
右下角可以看到当前会话所在的 Git 分支

看懂这两个位置以后,后面你就更容易判断自己当前是在本地工作区还是工作树,也更容易理解为什么右上角的按钮会跟着变化。
2. 创建新的工作树
有两种方法,选一个最适合你当前场景的即可。
方式 A:直接新建工作树
适用场景: 这是一个新任务,不需要继承之前对话的聊天历史。
怎么操作:
点击左下角当前工作区位置。
在菜单中选择“新工作树”。

接下来继续选择工作树的起点:
怎么操作:
保持环境为默认值即可,通常无环境也能正常开始。
在右下角选择你要开始工作的分支。
这组截图里只有 main,所以这里从 main 开始。

选好之后,像平时一样开始对话即可。
Codex 会在开始对话时自动创建工作树,你可以在消息区看到创建日志。

方式 B:从已有对话派生到新工作树
适用场景: 你想保留之前某个对话的上下文,并把它派生到新的工作树里继续做。
怎么操作:
在左侧找到你想继承历史的对话。
右键该对话。
选择“派生到新工作树”。

不管你用哪种入口,目标都一样:先拿到一个独立工作树,再在这个工作树里继续让 Codex 工作。接下来就进入正式开发阶段。
3. 在工作树里继续工作,并创建工作分支
这一步要做什么: 让 Codex 在工作树里完成第一轮改动,并把改动挂到一个明确分支上。
这一步什么时候做: 你可以在创建完这个工作树一开始的时候做,也可以选择在想要查看效果/合并提交的时候做。总之,在你想要查看效果/提交代码的时候,最好有个分支。
tips:如果你想查看工作树的情况,可以在 VSCode 里看到对应分支和改动。

怎么操作:
- 点击右上角出现的“创建分支”。

- 接着填写分支名:可以使用系统默认生成的名称,也可以手动改名,这里我把它命名为
codex/a。

到这里为止,工作树里的改动已经有了明确归属。下一步不是立刻合并,而是先把结果切到本地看一眼,确认它在你的真实运行环境里是不是符合预期。
4. 把工作树结果切到本地验证
这一步要做什么: 把工作树上的结果签出到本地工作区,方便你直接运行、调试和验证效果。
怎么操作:
- 在右上角点击“移动到本地”。

如果你的本地工作区不干净,Codex 会先拦住这次操作。
你会看到:

- 这时先在本地执行
git stash 或先提交,再回来继续。移动成功后,再回到当前对话确认界面状态。
你会看到:
左下角从工作树变成“本地”
右下角分支变成刚刚创建的 codex/a
右上角按钮从“移动到本地”变成“移至工作树”

这一步是整个流程里最关键的切换点。到了这里,你已经从“让 Codex 在工作树里生成结果”,进入“我在本地亲自验证结果”的阶段了。
5. 决定继续在本地改,还是把会话移回工作树
这一步要做什么: 根据你对效果的判断,决定下一步在哪里继续工作。
现在你已经可以在本地直接查看结果,比如启动前后端、手动点功能、看页面效果,或者做你平时习惯的验证动作。
如果结果还需要调整,通常有两种选择:
当会话切回工作树后,右上角仍然会用这个按钮提示当前可以来回切换。

注意:

如果这时你已经确认结果没问题,就可以进入最后一个大阶段:把这次工作安全地并回目标分支。下面保留两种做法,你可以挑自己更顺手的一种。
6. 把改动合并回目标分支
下面假设你最终想把结果合并回 main。这里保留两种做法,你按自己的习惯选一种即可。
做法 A:把当前改动直接移到本地 main
适用场景: 你想快速把当前未提交改动带回本地 main,不强调保留独立分支历史。
怎么操作:
- 在当前本地工作区先执行
git stash,把未提交改动放进暂存区。

2. 切换到本地 main 分支。

3. 再执行 git stash pop,把刚才的改动恢复出来。

做法 B:先在 codex/a 提交,再由 main 主动合并
适用场景: 你想保留工作树分支的提交历史,再把它规范地合并回 main。
第一步先让 codex/a 跟目标分支保持同步。
怎么操作:
- 在 VSCode 或你习惯的 Git 图形化工具里,找到“拉取自”。注意:菜单里需要选的是“拉取自”,不是普通“拉取”

- 选择目标分支,这里是
main。

同步完成后,在 codex/a 上正常提交。
提交完成以后,你可以有两种回到主线的方式:

当你已经切回本地 main 后,再执行分支合并。
怎么操作:
- 在分支菜单里选择“合并”。

- 选择刚才提交过的
codex/a。

你会看到: main 会吸收 codex/a 上的提交,而不是只拿到一份未提交文件。提交历史里可以看到 main 已经包含了这次工作内容。

最后正常同步到远程即可。

到这里,代码已经回到了你的目标分支,工作树也完成了它的使命。最后只剩一个收尾动作:把不再需要的工作树删掉。
7. 删除不再需要的工作树
这一步要做什么: 在确认改动已经合并完成后,清理掉不再需要的工作树。
怎么操作:
在 VSCode 中找到对应的工作树。
右键你想删除的那个工作树。
选择“删除工作树”。
