乐于分享
好东西不私藏

Codex App Windows 版高级教程(一):worktree教你从用顺到真正高手

Codex App Windows 版高级教程(一):worktree教你从用顺到真正高手

先说个题外话,昨天粉丝数达到100

非常感谢大家的支持,帮我度过了一个坎。我这边也准备了一些实测过的 AI 工具资料和使用经验,有需要的朋友可以私信交流。

之前写了 Codex App 的入门教程和高效使用方法,大家浏览量和转发都比较多,因此今天我开始做几个高级教程。

Codex App 高级进阶一共有 7 个大类:Worktrees(Git 工作树隔离)、Skills(Agent 技能系统)、Automations(自动化任务)、MCP(连接外部工具)、AGENTS.md(项目级指令文件)、Subagents(子代理)、config.toml 高级配置。

如果全塞一篇文章里太长了,怕你们读到一半就划走。所以今天先单独讲 Worktree,后面几天再出其他几个,希望大家不要嫌我拉稀啊,哈哈。

在正式开始之前,先说一个很多人不知道的小技巧:Codex App 在推理过程中,你可以继续发消息给它,它会自动接收并加入到当前推理中继续处理。 这叫追加提问。

不过你需要先去设置 → 常规 → 把”跟进行为”选成”引导”才行。

好,进入正题。


先搞清楚 Worktree 和 Local 的关系

我们用 Codex App 的时候,第一步都是新建一个项目,选择你的项目目录。然后新建一个线程,这个线程默认就是 Local 模式——直接在你本地项目目录里干活,改的就是你眼前这份代码。

Worktree 不一样。它是 Git 帮你开出来的一个副本目录,Codex 在里面改东西不会影响你本地的文件。你可以理解为:Local 是改原件,Worktree 是改副本。

但 Worktree 有个前提:它依赖本地 Git。 如果你的项目里没有 Git,你需要先创建一个。Codex App 里有直接点击初始化 Git 的按钮,不用敲命令行。

需要等会可以点击后去点击下初始化git

git创建成功


我创建 Worktree 失败了

Git 创建成功后,我新建了一个 Worktree 线程。

创建后界面的右边有几个选项,我来解释一下:

我分别打开两个选项:

**”无环境”和”本地环境”**:无环境就是 Agent 直接在裸目录里干活,不预设任何启动命令。本地环境是你可以预设一些项目启动命令,比如 npm install、pip install 之类的,每次开新 Worktree 线程,Codex 会自动先跑这些命令把环境搭好再开始干活。如果需要设置的话,可以让 Codex 帮你总结一下你项目的启动命令是什么,然后点”创建本地环境”写进去就行。

**”始于 master”和”含本地代码更改”**:始于 master 就是从 master 分支拉一个干净的副本出来。含本地代码更改就是把你 Local 工作区里还没提交的改动也带过去,选了之后你会看到多一个”当前”字眼的选项。

我第一次默认选了”无环境”+”始于 master”,发了个”你好”想建立线程,结果失败了。

想了一下就明白了——我刚初始化 Git,还没有任何提交,master 是空的。你 master 都是空的,它从哪拉副本?

于是去 Local 里面提交 Git。提交又失败了,服了。

让 Codex App 帮我处理,修复之后成功提交。

然后把之前那个失败的 Worktree 线程归档掉,重新建一个。这次成功了。

这个坑很有必要说:你必须先在 Local 里至少提交过一次 Git,master 才有内容,才能正常创建 Worktree。


Worktree 在哪找?这个设计真的很烦

创建成功后,你会发现 Worktree 线程不在左侧栏里。你如果切到了 Local 线程,想找回 Worktree,必须去设置里面找。

这个设计我用下来真的很头疼,后面测并行的时候来回切更烦人。Codex 的 GitHub 上已经有人提了这个问题

https://github.com/openai/codex/issues/10522

看后续官方是否会修复。

设置里还有个”删除”按钮,不用慌,那是管理 Worktree 物理文件用的,不是删对话线程。默认开启了自动清理旧 Worktree,保留最近 15 个,超出才删。官方说删除前会自动快照,”pruned worktrees should always be restorable”——但实际能不能恢复我还没试过,感兴趣的可以自己多建几个超过 15 个试试看。


测试一:Local 和 Worktree 真的互不影响吗?

我在 Cursor 里打开了一个文件,然后在 Worktree 线程里让 Codex 给这个文件加一段结束语。

这是我在cursor里面展示的文件

然后给 codex app 提示词:

这是我在cursor里面展示的文件:AI反偷拍技术调研与解决方案报告,你帮我在文章后面加几个结束语来作为第8个部分的内容;

Worktree 里改完了,去 Cursor 看本地文件——没变。

确认:Local 和 Worktree 在两个不同的目录分支上,互不影响。 这也是 Worktree 最核心的价值:你让 Codex 放开手去改,不用担心把你本地搞乱。

这个目录展示的就是6worktree的目录,目前我的codex app 里面就有6worktree

其实可以看出来就是app在这个目录下新建一个备份,然后里面有git来管理;


测试二:三个 Worktree 线程并行跑

我新建了三个 Worktree 线程:B1、B2、B3,都是”无环境 + 始于 master”。

现在默认选的就是新工作树了,然后无环境+始于mater(依旧是那个初始提交的master

创建完记得改个你好记的名字,不然默认名称一堆字符很难分辨。

3个worktree创建完成。

然后我让三个线程同时改同一个 .env.example 文件,但改的位置不一样:

我让3个线程都来改这个文件,分别给3个提示词:

worktreeB1

 .env.example 文件的 ZHIPU_API_KEY 那一行后面,

加一行注释说明这个 KEY 支持哪些模型,例如:支持模型:GLM-4V-Flash / GLM-4V

worktreeB2:

 .env.example 文件的 AMAP_KEY 那一行后面,

加一行注释说明申请步骤,例如:申请步骤:登录控制台 → 创建应用 → 选择Web服务类型

worktreeB3:

 .env.example 文件的 ZHIPU_API_KEY 那一行后面,

加一行注释说明费用,例如:费用说明:GLM-4V-Flash 完全免费,无调用次数限制

按照这个来说B1B2应该不会冲突,B3B1应该会冲突,开始分别输入各自的worktree里面,这个时候你就能感觉到worktree不在左边栏好痛点啊,一直要去点设置里面的worktree才行,非常麻烦,希望codex团队尽快修复这个设计bug;

三个都改完之后去 Cursor 看本地文件,都没变。因为三个 Worktree 各自在自己的分支目录下。

去看每个 Worktree 的分支目录,三个都改对了。

通过这个操作能找到当前worktree是在哪个分支下;

287b — B1

9a8e — B2

0ac0 —B3

B1修改的是对的;

其他的也是对的;


测试三:合并分支,这才是真正的考验

三个 Worktree 各自改完了,接下来要把改动合并回 master。

先在三个 Worktree 里分别点击创建分支。

第一个就报错了,

让 Codex App 帮我看了一下,它说是”假错误”不用修复。另外两个正常创建成功。

然后三个 Worktree 分别点提交。如果你的 Git 有远程仓库可以选”提交并推送”,我这边还没设置远程 Git,就选了提交。三个都提交成功。

最后回到 Local,要把三个分支合并到 master 里——

GG,我找了半天都没找到 Codex App 里有合并代码的按钮。

想着用 IDEA 来 merge 吧,

结果 IDEA 里面识别不了 Worktree 的 Git 结构。Codex App 生成的 Worktree 在 IDEA 里面没法管理。

最后只能用 Git 命令行来 merge。B1 和 B2 不冲突,直接合进去了。B3 和 B1 冲突了,我选了两个都保留,然后让 Codex App 帮我提交到远程仓库。

合并完成。

push成功。

冲突的地方是选择了两个都保留。


说说真实感受

这个怎么说,对于非技术人员这个功能确实不好用,毕竟涉及到git操作,对于程序员来说要懂git后才能比较好的理解里面的关系,并且还是有一些不足的地方,个人拙见啊,大家有更好的git操作欢迎评论区留言

以上觉得有用的话,关注下、点个赞或收藏、转发给你需要的朋友,如果想第一时间收到推送,也可以给我个星标⭐ 谢谢你看我的文章,下次见。
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Codex App Windows 版高级教程(一):worktree教你从用顺到真正高手

猜你喜欢

  • 暂无文章