codex Windows worktree使用分享
- 内容介绍
- 文章标签
- 相关推荐
前段时间codex Windows app发布了,看见微软商店的介绍里有什么并行worktree之类的,也没找到什么经验分享,所以特地在这里分享一下自己摸索的使用心得。我的使用比较粗糙,欢迎各位佬友一起分享。 官方文档:Worktrees
默认前提:
- 你已经有一个本地以及远程的 Git 仓库
- 你知道 `branch`、`stash`、`commit`、`merge` 的基本含义
- 你当前使用的是和截图相近版本的 Codex Desktop(Windows)
本篇文章涉及的内容
-
先看懂界面里“当前工作区状态”和“当前分支”这两个位置
-
创建新的工作树
-
在工作树里继续对话,并给当前改动创建工作分支
-
把工作树结果切到本地工作区验证
-
根据验证结果,决定继续在本地修改,还是把会话移回工作树
-
选择一种方式把改动合并回目标分支
-
删除不再需要的工作树
你可以先把它理解成一句话:
先在工作树里做,再切到本地看,确认没问题后再合回主分支。
1. 先认识界面里的关键信息
先看懂界面里最重要的两个位置。
-
左下角可以看出当前会话是在本地工作区还是工作树
-
右下角可以看到当前会话所在的 Git 分支
image2560×1380 176 KB
看懂这两个位置以后,后面你就更容易判断自己当前是在本地工作区还是工作树,也更容易理解为什么右上角的按钮会跟着变化。
2. 创建新的工作树
有两种方法,选一个最适合你当前场景的即可。
方式 A:直接新建工作树
适用场景: 这是一个新任务,不需要继承之前对话的聊天历史。
怎么操作:
-
点击左下角当前工作区位置。
-
在菜单中选择“新工作树”。
image2560×1380 161 KB
接下来继续选择工作树的起点:
怎么操作:
-
保持环境为默认值即可,通常无环境也能正常开始。
-
在右下角选择你要开始工作的分支。
-
这组截图里只有
main,所以这里从main开始。
image2560×1380 168 KB
选好之后,像平时一样开始对话即可。
Codex 会在开始对话时自动创建工作树,你可以在消息区看到创建日志。
image2560×1380 153 KB
方式 B:从已有对话派生到新工作树
适用场景: 你想保留之前某个对话的上下文,并把它派生到新的工作树里继续做。
怎么操作:
-
在左侧找到你想继承历史的对话。
-
右键该对话。
-
选择“派生到新工作树”。
image2560×1380 386 KB
不管你用哪种入口,目标都一样:先拿到一个独立工作树,再在这个工作树里继续让 Codex 工作。接下来就进入正式开发阶段。
3. 在工作树里继续工作,并创建工作分支
这一步要做什么: 让 Codex 在工作树里完成第一轮改动,并把改动挂到一个明确分支上。
这一步什么时候做: 你可以在创建完这个工作树一开始的时候做,也可以选择在想要查看效果/合并提交的时候做。总之,在你想要查看效果/提交代码的时候,最好有个分支。
tips:如果你想查看工作树的情况,可以在 VSCode 里看到对应分支和改动。
image333×847 25.7 KB
怎么操作:
- 点击右上角出现的“创建分支”。
image2560×1380 207 KB
- 接着填写分支名:可以使用系统默认生成的名称,也可以手动改名,这里我把它命名为
codex/a。
image2560×1380 150 KB
到这里为止,工作树里的改动已经有了明确归属。下一步不是立刻合并,而是先把结果切到本地看一眼,确认它在你的真实运行环境里是不是符合预期。
4. 把工作树结果切到本地验证
这一步要做什么: 把工作树上的结果签出到本地工作区,方便你直接运行、调试和验证效果。
怎么操作:
- 在右上角点击“移动到本地”。
image2560×1380 210 KB
如果你的本地工作区不干净,Codex 会先拦住这次操作。
你会看到:
- 弹窗会提示你先处理本地改动
image2560×1380 158 KB
- 这时先在本地执行
git stash或先提交,再回来继续。移动成功后,再回到当前对话确认界面状态。
你会看到:
-
左下角从工作树变成“本地”
-
右下角分支变成刚刚创建的
codex/a -
右上角按钮从“移动到本地”变成“移至工作树”
image2560×1380 187 KB
这一步是整个流程里最关键的切换点。到了这里,你已经从“让 Codex 在工作树里生成结果”,进入“我在本地亲自验证结果”的阶段了。
5. 决定继续在本地改,还是把会话移回工作树
这一步要做什么: 根据你对效果的判断,决定下一步在哪里继续工作。
现在你已经可以在本地直接查看结果,比如启动前后端、手动点功能、看页面效果,或者做你平时习惯的验证动作。
如果结果还需要调整,通常有两种选择:
-
小改动:继续留在本地对话,边改边看效果更直接
-
大改动:点击右上角“移至工作树”,让 Codex 回到工作树继续长时间修改,本地工作区则可以空出来做别的事
当会话切回工作树后,右上角仍然会用这个按钮提示当前可以来回切换。
Clip_2026-03-15_10-22-002560×1380 143 KB
注意:
-
“移动到本地”和“移至工作树”这两个操作,在 Codex 正在思考或生成代码时不可用
-
所以你最好在它开始长时间运行之前,就先决定接下来想在哪个工作区继续
image2560×1380 171 KB
如果这时你已经确认结果没问题,就可以进入最后一个大阶段:把这次工作安全地并回目标分支。下面保留两种做法,你可以挑自己更顺手的一种。
6. 把改动合并回目标分支
下面假设你最终想把结果合并回 main。这里保留两种做法,你按自己的习惯选一种即可。
做法 A:把当前改动直接移到本地 main
适用场景: 你想快速把当前未提交改动带回本地 main,不强调保留独立分支历史。
怎么操作:
- 在当前本地工作区先执行
git stash,把未提交改动放进暂存区。
image692×373 84.6 KB
2. 切换到本地 main 分支。
image692×373 81.8 KB
3. 再执行 git stash pop,把刚才的改动恢复出来。
image2560×1380 393 KB
做法 B:先在 codex/a 提交,再由 main 主动合并
适用场景: 你想保留工作树分支的提交历史,再把它规范地合并回 main。
第一步先让 codex/a 跟目标分支保持同步。
怎么操作:
- 在 VSCode 或你习惯的 Git 图形化工具里,找到“拉取自”。注意:菜单里需要选的是“拉取自”,不是普通“拉取”
image2560×1380 358 KB
- 选择目标分支,这里是
main。
image2560×1380 410 KB
同步完成后,在 codex/a 上正常提交。
提交完成以后,你可以有两种回到主线的方式:
-
在 Codex Desktop 里点击“移至工作树”,让当前对话回到工作树
-
或者直接在 Git 工具里手动签出到
main
image692×373 24.3 KB
当你已经切回本地 main 后,再执行分支合并。
怎么操作:
- 在分支菜单里选择“合并”。
image692×373 66.2 KB
- 选择刚才提交过的
codex/a。
image692×373 58.6 KB
你会看到: main 会吸收 codex/a 上的提交,而不是只拿到一份未提交文件。提交历史里可以看到 main 已经包含了这次工作内容。
image530×203 10.9 KB
最后正常同步到远程即可。
image2560×1380 347 KB
到这里,代码已经回到了你的目标分支,工作树也完成了它的使命。最后只剩一个收尾动作:把不再需要的工作树删掉。
7. 删除不再需要的工作树
这一步要做什么: 在确认改动已经合并完成后,清理掉不再需要的工作树。
怎么操作:
-
在 VSCode 中找到对应的工作树。
-
右键你想删除的那个工作树。
-
选择“删除工作树”。
image2560×1380 333 KB
网友解答:--【壹】--:
这和正常开发的时候开个 dev 分支,开发完了 PR 合回到 main 分支应该就是一个道理吧,只不过他弄了几个按钮,习惯用git的还不如自己手写git命令切一下快
深入看了一下git的worktree,以前都没用过呢。他解决的是同时并行操作多个活跃的分支,而不是在一个分支上干完再切到另一个,又学到新知识了。
--【贰】--:
感谢大佬
--【叁】--:
写的太好了,终于知道怎么用了,谢谢佬
--【肆】--:
worktree是git自带的。之前很多所谓的agent并行开发,都是用worktree实现的。
--【伍】--:
codex不搞合并,Windows反正不合并,他最多只是能把你本地工作区当前分支切到worktree分支。合并还是得自己操作。或者你让ai给你操作。本质是git命令。
--【陆】--:
佬,你太细了
--【柒】--:
之前做项目批量迁移代码的时候用了,现在我的工作不大方便并行,所以最近没用。其实一般情况直接逻辑拆分任务并行,不用worktree。另外像superpowers之类的工作流也带着worktree功能,不过一般我也不大用。
--【捌】--:
感谢分享
--【玖】--:
好详细,留着后面慢慢看了。太牛了大佬!!!
--【拾】--:
没有呢。
--【拾壹】--:
183无敌猛男在此
--【拾贰】--:
看完了,感觉属实繁琐,想问下佬坚持用这种方式来管理worktree了吗
而且codex等于是只搞了worktree内的合并,实际最终把worktree合并到main之类的操作还是需要其他方式是吗
--【拾叁】--:
服了服了
前段时间codex Windows app发布了,看见微软商店的介绍里有什么并行worktree之类的,也没找到什么经验分享,所以特地在这里分享一下自己摸索的使用心得。我的使用比较粗糙,欢迎各位佬友一起分享。 官方文档:Worktrees
默认前提:
- 你已经有一个本地以及远程的 Git 仓库
- 你知道 `branch`、`stash`、`commit`、`merge` 的基本含义
- 你当前使用的是和截图相近版本的 Codex Desktop(Windows)
本篇文章涉及的内容
-
先看懂界面里“当前工作区状态”和“当前分支”这两个位置
-
创建新的工作树
-
在工作树里继续对话,并给当前改动创建工作分支
-
把工作树结果切到本地工作区验证
-
根据验证结果,决定继续在本地修改,还是把会话移回工作树
-
选择一种方式把改动合并回目标分支
-
删除不再需要的工作树
你可以先把它理解成一句话:
先在工作树里做,再切到本地看,确认没问题后再合回主分支。
1. 先认识界面里的关键信息
先看懂界面里最重要的两个位置。
-
左下角可以看出当前会话是在本地工作区还是工作树
-
右下角可以看到当前会话所在的 Git 分支
image2560×1380 176 KB
看懂这两个位置以后,后面你就更容易判断自己当前是在本地工作区还是工作树,也更容易理解为什么右上角的按钮会跟着变化。
2. 创建新的工作树
有两种方法,选一个最适合你当前场景的即可。
方式 A:直接新建工作树
适用场景: 这是一个新任务,不需要继承之前对话的聊天历史。
怎么操作:
-
点击左下角当前工作区位置。
-
在菜单中选择“新工作树”。
image2560×1380 161 KB
接下来继续选择工作树的起点:
怎么操作:
-
保持环境为默认值即可,通常无环境也能正常开始。
-
在右下角选择你要开始工作的分支。
-
这组截图里只有
main,所以这里从main开始。
image2560×1380 168 KB
选好之后,像平时一样开始对话即可。
Codex 会在开始对话时自动创建工作树,你可以在消息区看到创建日志。
image2560×1380 153 KB
方式 B:从已有对话派生到新工作树
适用场景: 你想保留之前某个对话的上下文,并把它派生到新的工作树里继续做。
怎么操作:
-
在左侧找到你想继承历史的对话。
-
右键该对话。
-
选择“派生到新工作树”。
image2560×1380 386 KB
不管你用哪种入口,目标都一样:先拿到一个独立工作树,再在这个工作树里继续让 Codex 工作。接下来就进入正式开发阶段。
3. 在工作树里继续工作,并创建工作分支
这一步要做什么: 让 Codex 在工作树里完成第一轮改动,并把改动挂到一个明确分支上。
这一步什么时候做: 你可以在创建完这个工作树一开始的时候做,也可以选择在想要查看效果/合并提交的时候做。总之,在你想要查看效果/提交代码的时候,最好有个分支。
tips:如果你想查看工作树的情况,可以在 VSCode 里看到对应分支和改动。
image333×847 25.7 KB
怎么操作:
- 点击右上角出现的“创建分支”。
image2560×1380 207 KB
- 接着填写分支名:可以使用系统默认生成的名称,也可以手动改名,这里我把它命名为
codex/a。
image2560×1380 150 KB
到这里为止,工作树里的改动已经有了明确归属。下一步不是立刻合并,而是先把结果切到本地看一眼,确认它在你的真实运行环境里是不是符合预期。
4. 把工作树结果切到本地验证
这一步要做什么: 把工作树上的结果签出到本地工作区,方便你直接运行、调试和验证效果。
怎么操作:
- 在右上角点击“移动到本地”。
image2560×1380 210 KB
如果你的本地工作区不干净,Codex 会先拦住这次操作。
你会看到:
- 弹窗会提示你先处理本地改动
image2560×1380 158 KB
- 这时先在本地执行
git stash或先提交,再回来继续。移动成功后,再回到当前对话确认界面状态。
你会看到:
-
左下角从工作树变成“本地”
-
右下角分支变成刚刚创建的
codex/a -
右上角按钮从“移动到本地”变成“移至工作树”
image2560×1380 187 KB
这一步是整个流程里最关键的切换点。到了这里,你已经从“让 Codex 在工作树里生成结果”,进入“我在本地亲自验证结果”的阶段了。
5. 决定继续在本地改,还是把会话移回工作树
这一步要做什么: 根据你对效果的判断,决定下一步在哪里继续工作。
现在你已经可以在本地直接查看结果,比如启动前后端、手动点功能、看页面效果,或者做你平时习惯的验证动作。
如果结果还需要调整,通常有两种选择:
-
小改动:继续留在本地对话,边改边看效果更直接
-
大改动:点击右上角“移至工作树”,让 Codex 回到工作树继续长时间修改,本地工作区则可以空出来做别的事
当会话切回工作树后,右上角仍然会用这个按钮提示当前可以来回切换。
Clip_2026-03-15_10-22-002560×1380 143 KB
注意:
-
“移动到本地”和“移至工作树”这两个操作,在 Codex 正在思考或生成代码时不可用
-
所以你最好在它开始长时间运行之前,就先决定接下来想在哪个工作区继续
image2560×1380 171 KB
如果这时你已经确认结果没问题,就可以进入最后一个大阶段:把这次工作安全地并回目标分支。下面保留两种做法,你可以挑自己更顺手的一种。
6. 把改动合并回目标分支
下面假设你最终想把结果合并回 main。这里保留两种做法,你按自己的习惯选一种即可。
做法 A:把当前改动直接移到本地 main
适用场景: 你想快速把当前未提交改动带回本地 main,不强调保留独立分支历史。
怎么操作:
- 在当前本地工作区先执行
git stash,把未提交改动放进暂存区。
image692×373 84.6 KB
2. 切换到本地 main 分支。
image692×373 81.8 KB
3. 再执行 git stash pop,把刚才的改动恢复出来。
image2560×1380 393 KB
做法 B:先在 codex/a 提交,再由 main 主动合并
适用场景: 你想保留工作树分支的提交历史,再把它规范地合并回 main。
第一步先让 codex/a 跟目标分支保持同步。
怎么操作:
- 在 VSCode 或你习惯的 Git 图形化工具里,找到“拉取自”。注意:菜单里需要选的是“拉取自”,不是普通“拉取”
image2560×1380 358 KB
- 选择目标分支,这里是
main。
image2560×1380 410 KB
同步完成后,在 codex/a 上正常提交。
提交完成以后,你可以有两种回到主线的方式:
-
在 Codex Desktop 里点击“移至工作树”,让当前对话回到工作树
-
或者直接在 Git 工具里手动签出到
main
image692×373 24.3 KB
当你已经切回本地 main 后,再执行分支合并。
怎么操作:
- 在分支菜单里选择“合并”。
image692×373 66.2 KB
- 选择刚才提交过的
codex/a。
image692×373 58.6 KB
你会看到: main 会吸收 codex/a 上的提交,而不是只拿到一份未提交文件。提交历史里可以看到 main 已经包含了这次工作内容。
image530×203 10.9 KB
最后正常同步到远程即可。
image2560×1380 347 KB
到这里,代码已经回到了你的目标分支,工作树也完成了它的使命。最后只剩一个收尾动作:把不再需要的工作树删掉。
7. 删除不再需要的工作树
这一步要做什么: 在确认改动已经合并完成后,清理掉不再需要的工作树。
怎么操作:
-
在 VSCode 中找到对应的工作树。
-
右键你想删除的那个工作树。
-
选择“删除工作树”。
image2560×1380 333 KB
网友解答:--【壹】--:
这和正常开发的时候开个 dev 分支,开发完了 PR 合回到 main 分支应该就是一个道理吧,只不过他弄了几个按钮,习惯用git的还不如自己手写git命令切一下快
深入看了一下git的worktree,以前都没用过呢。他解决的是同时并行操作多个活跃的分支,而不是在一个分支上干完再切到另一个,又学到新知识了。
--【贰】--:
感谢大佬
--【叁】--:
写的太好了,终于知道怎么用了,谢谢佬
--【肆】--:
worktree是git自带的。之前很多所谓的agent并行开发,都是用worktree实现的。
--【伍】--:
codex不搞合并,Windows反正不合并,他最多只是能把你本地工作区当前分支切到worktree分支。合并还是得自己操作。或者你让ai给你操作。本质是git命令。
--【陆】--:
佬,你太细了
--【柒】--:
之前做项目批量迁移代码的时候用了,现在我的工作不大方便并行,所以最近没用。其实一般情况直接逻辑拆分任务并行,不用worktree。另外像superpowers之类的工作流也带着worktree功能,不过一般我也不大用。
--【捌】--:
感谢分享
--【玖】--:
好详细,留着后面慢慢看了。太牛了大佬!!!
--【拾】--:
没有呢。
--【拾壹】--:
183无敌猛男在此
--【拾贰】--:
看完了,感觉属实繁琐,想问下佬坚持用这种方式来管理worktree了吗
而且codex等于是只搞了worktree内的合并,实际最终把worktree合并到main之类的操作还是需要其他方式是吗
--【拾叁】--:
服了服了

