Codex 中的 Current checkout 和 New worktree 怎么选?

14 阅读2分钟

这是 Codex CLI 在问:新开的 conversation(会话)要在哪个 Git 工作区里执行?

1. Current checkout

Keep using the current working directory

就是继续使用你现在所在的项目目录。

例如你现在终端位于:

~/projects/my-app

选择 Current checkout 后,新 Codex 会话仍然直接操作:

~/projects/my-app

因此它能看到你当前所有文件,包括尚未 commit 的修改。它接下来修改代码,也会直接反映在这个目录里。

适合:你就是想接着当前项目继续干活。


2. New worktree

Create an isolated managed checkout

这是利用 Git 的 worktree 功能,给这个新会话创建一个隔离的工作副本。

可以简单理解成:

你的主工作区
my-app/
   ↓
   ├── 你继续在这里开发

Codex 新 worktree
另一个目录/
   ↓
   ├── Codex 在这里独立修改

这样 Codex 的修改不会直接弄乱你当前工作目录。比如你当前正在:

main
你:正在修改 login.ts

同时让另一个 Codex conversation 去尝试:

Codex:
修改 payment.ts
修改 api.ts
运行测试
...

选择 New worktree 后,它可以在隔离环境里折腾,不会直接碰你当前 checkout 中那些未提交的修改。


最核心的区别就是:

Current checkoutNew worktree
工作目录当前目录新建隔离目录
Codex 修改当前文件会不会
看到当前未提交修改通常会通常不会直接共享
多个 Codex 同时工作容易互相影响更适合
最适合延续当前任务并行/独立任务

如果你平时只开一个 Codex CLI 干活,基本选 1. Current checkout 就行。

而这个界面之所以特别有用,是因为 Codex 现在支持你开多个 conversation。比如你可以让 Conversation A 修 bug、Conversation B 写测试、你自己继续开发,这时候后两个使用独立 worktree,可以减少彼此修改文件造成的冲突。

另外有个容易误解的地方:New worktree 不是重新 git clone 一份仓库。 它用的是 Git worktree 机制,共享底层 Git 仓库数据,但拥有独立的工作目录/checkout,所以通常比重新 clone 更轻量。