codex Windows worktree使用分享

遇见 2026-03-15 13:29 1

前段时间codex Windows app发布了,看见微软商店的介绍里有什么并行worktree之类的,也没找到什么经验分享,所以特地在这里分享一下自己摸索的使用心得。我的使用比较粗糙,欢迎各位佬友一起分享。 官方文档:Worktrees


默认前提:

- 你已经有一个本地以及远程的 Git 仓库
- 你知道 `branch`、`stash`、`commit`、`merge` 的基本含义
- 你当前使用的是和截图相近版本的 Codex Desktop(Windows)

本篇文章涉及的内容




  1. 先看懂界面里“当前工作区状态”和“当前分支”这两个位置




  2. 创建新的工作树




  3. 在工作树里继续对话,并给当前改动创建工作分支




  4. 把工作树结果切到本地工作区验证




  5. 根据验证结果,决定继续在本地修改,还是把会话移回工作树




  6. 选择一种方式把改动合并回目标分支




  7. 删除不再需要的工作树




你可以先把它理解成一句话:


先在工作树里做,再切到本地看,确认没问题后再合回主分支。


1. 先认识界面里的关键信息


先看懂界面里最重要的两个位置。




  • 左下角可以看出当前会话是在本地工作区还是工作树




  • 右下角可以看到当前会话所在的 Git 分支





看懂这两个位置以后,后面你就更容易判断自己当前是在本地工作区还是工作树,也更容易理解为什么右上角的按钮会跟着变化。


2. 创建新的工作树


有两种方法,选一个最适合你当前场景的即可。


方式 A:直接新建工作树


适用场景: 这是一个新任务,不需要继承之前对话的聊天历史。


怎么操作:




  1. 点击左下角当前工作区位置。




  2. 在菜单中选择“新工作树”。





接下来继续选择工作树的起点:


怎么操作:




  1. 保持环境为默认值即可,通常无环境也能正常开始。




  2. 在右下角选择你要开始工作的分支。




  3. 这组截图里只有 main,所以这里从 main 开始。





选好之后,像平时一样开始对话即可。


Codex 会在开始对话时自动创建工作树,你可以在消息区看到创建日志。



方式 B:从已有对话派生到新工作树


适用场景: 你想保留之前某个对话的上下文,并把它派生到新的工作树里继续做。


怎么操作:




  1. 在左侧找到你想继承历史的对话。




  2. 右键该对话。




  3. 选择“派生到新工作树”。





不管你用哪种入口,目标都一样:先拿到一个独立工作树,再在这个工作树里继续让 Codex 工作。接下来就进入正式开发阶段。


3. 在工作树里继续工作,并创建工作分支


这一步要做什么: 让 Codex 在工作树里完成第一轮改动,并把改动挂到一个明确分支上。


这一步什么时候做: 你可以在创建完这个工作树一开始的时候做,也可以选择在想要查看效果/合并提交的时候做。总之,在你想要查看效果/提交代码的时候,最好有个分支。


tips:如果你想查看工作树的情况,可以在 VSCode 里看到对应分支和改动。


怎么操作:



  1. 点击右上角出现的“创建分支”。




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



到这里为止,工作树里的改动已经有了明确归属。下一步不是立刻合并,而是先把结果切到本地看一眼,确认它在你的真实运行环境里是不是符合预期。


4. 把工作树结果切到本地验证


这一步要做什么: 把工作树上的结果签出到本地工作区,方便你直接运行、调试和验证效果。


怎么操作:



  1. 在右上角点击“移动到本地”。



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


你会看到:



  • 弹窗会提示你先处理本地改动




  • 这时先在本地执行 git stash 或先提交,再回来继续。移动成功后,再回到当前对话确认界面状态。


你会看到:




  • 左下角从工作树变成“本地”




  • 右下角分支变成刚刚创建的 codex/a




  • 右上角按钮从“移动到本地”变成“移至工作树”





这一步是整个流程里最关键的切换点。到了这里,你已经从“让 Codex 在工作树里生成结果”,进入“我在本地亲自验证结果”的阶段了。


5. 决定继续在本地改,还是把会话移回工作树


这一步要做什么: 根据你对效果的判断,决定下一步在哪里继续工作。


现在你已经可以在本地直接查看结果,比如启动前后端、手动点功能、看页面效果,或者做你平时习惯的验证动作。


如果结果还需要调整,通常有两种选择:




  • 小改动:继续留在本地对话,边改边看效果更直接




  • 大改动:点击右上角“移至工作树”,让 Codex 回到工作树继续长时间修改,本地工作区则可以空出来做别的事




当会话切回工作树后,右上角仍然会用这个按钮提示当前可以来回切换。


注意:




  • “移动到本地”和“移至工作树”这两个操作,在 Codex 正在思考或生成代码时不可用




  • 所以你最好在它开始长时间运行之前,就先决定接下来想在哪个工作区继续





如果这时你已经确认结果没问题,就可以进入最后一个大阶段:把这次工作安全地并回目标分支。下面保留两种做法,你可以挑自己更顺手的一种。


6. 把改动合并回目标分支


下面假设你最终想把结果合并回 main。这里保留两种做法,你按自己的习惯选一种即可。


做法 A:把当前改动直接移到本地 main


适用场景: 你想快速把当前未提交改动带回本地 main,不强调保留独立分支历史。


怎么操作:



  1. 在当前本地工作区先执行 git stash,把未提交改动放进暂存区。




2. 切换到本地 main 分支。




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



做法 B:先在 codex/a 提交,再由 main 主动合并


适用场景: 你想保留工作树分支的提交历史,再把它规范地合并回 main


第一步先让 codex/a 跟目标分支保持同步。


怎么操作:



  1. 在 VSCode 或你习惯的 Git 图形化工具里,找到“拉取自”。注意:菜单里需要选的是“拉取自”,不是普通“拉取”




  1. 选择目标分支,这里是 main



同步完成后,在 codex/a 上正常提交。


提交完成以后,你可以有两种回到主线的方式:




  • 在 Codex Desktop 里点击“移至工作树”,让当前对话回到工作树




  • 或者直接在 Git 工具里手动签出到 main





当你已经切回本地 main 后,再执行分支合并。


怎么操作:



  1. 在分支菜单里选择“合并”。




  1. 选择刚才提交过的 codex/a



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



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



到这里,代码已经回到了你的目标分支,工作树也完成了它的使命。最后只剩一个收尾动作:把不再需要的工作树删掉。


7. 删除不再需要的工作树


这一步要做什么: 在确认改动已经合并完成后,清理掉不再需要的工作树。


怎么操作:




  1. 在 VSCode 中找到对应的工作树。




  2. 右键你想删除的那个工作树。




  3. 选择“删除工作树”。




最新回复 (16)
  • lemon77 03-15 14:08
    1

    佬,你太细了

  • 遇见 楼主 03-15 14:11
    2

    183无敌猛男在此 ^-^

  • lemon77 03-15 14:11
    3

    服了服了

  • 大帅哥 03-15 15:01
    4

    感谢大佬

  • 遇见 楼主 03-17 16:18
    6

    没有呢。

  • xirzy 03-17 16:21
    7

    感谢分享

  • Sioncovy 03-22 16:50
    8

    写的太好了,终于知道怎么用了,谢谢佬

  • JrD 04-09 16:33
    9

    看完了,感觉属实繁琐,想问下佬坚持用这种方式来管理worktree了吗


    而且codex等于是只搞了worktree内的合并,实际最终把worktree合并到main之类的操作还是需要其他方式是吗 ^-^

  • 破碎虚空 04-09 16:38
    10

    worktree是git自带的。之前很多所谓的agent并行开发,都是用worktree实现的。

  • 遇见 楼主 04-09 16:38
    11

    之前做项目批量迁移代码的时候用了,现在我的工作不大方便并行,所以最近没用。其实一般情况直接逻辑拆分任务并行,不用worktree。另外像superpowers之类的工作流也带着worktree功能,不过一般我也不大用。

  • 遇见 楼主 04-09 17:12
    12

    codex不搞合并,Windows反正不合并,他最多只是能把你本地工作区当前分支切到worktree分支。合并还是得自己操作。或者你让ai给你操作。本质是git命令。

  • 7xWEcQ 04-09 20:20
    13

    这和正常开发的时候开个 dev 分支,开发完了 PR 合回到 main 分支应该就是一个道理吧,只不过他弄了几个按钮,习惯用git的还不如自己手写git命令切一下快




    深入看了一下git的worktree,以前都没用过呢。他解决的是同时并行操作多个活跃的分支,而不是在一个分支上干完再切到另一个,又学到新知识了。

  • LuQQ 04-13 08:10
    14

    好详细,留着后面慢慢看了。太牛了大佬!!!

  • Yzsama 04-24 18:55
    15

    但是存在一个问题,worktree 切换了, 我发现修改的文件代码没有跟踪。无法 review 代码

  • 遇见 楼主 04-24 20:24
    16

    我好像没有遇到这个问题。我一般都保持主分支干净,没有更改。worktree如果要切到我的本地工作区,他会直接把更改带过来。

  • xiazi502 07-14 00:32
    17

    大家前后端同时开发都是怎么安排的呀?我是cursor弄个工作区,再放个shared文件夹,把整体项目说明放到shared文件夹下,每次让codex读项目文件夹,然后去改前后端,这样ok吗?

* 帖子来源Linux.do
返回