Codex worktree:為第二個任務建立獨立工作副本
MarkdownCodex CLI 0.155.1 的工作副本:實驗性 worktree 旗標、來源 HEAD、新資料夾檢查、保留結果與安全移除。
閱讀全文
重點
在 Codex CLI 0.155.1 版中,使用 codex --enable worktrees --worktree 為第二個任務建立獨立工作副本。這項功能仍處於實驗階段,且預設為停用:如果你尚未啟用它,Codex 會拒絕在未加上 --enable worktrees 的情況下使用 --worktree 啟動。副本會從原始專案最新的提交(HEAD)建立,不包含未提交的變更,並處於 detached HEAD 狀態——沒有附加具名分支。
例如,你正使用 Codex CLI 重構某個模組,這時又接到第二個任務:為另一個模組撰寫測試。在同一個資料夾中開啟第二個工作階段有風險:很容易混淆第一個與第二個任務的變更。--worktree 旗標會為第二個任務建立同一專案的獨立資料夾,讓第一個任務維持原狀。
與代理平行協作的實用資源:Ailoot 文件。
--worktree 會建立什麼,以及哪些檔案會進入副本
在 Git 術語中,worktree 是連結至同一個儲存庫的額外工作資料夾:它共用提交歷史,但在磁碟上有自己的檔案組。在 Codex CLI 0.155.1 中,--worktree 旗標使用這項 Git 機制,在獨立資料夾中啟動新的代理工作階段,不會動到第一個任務已在其中執行的資料夾。
新的工作副本會包含啟動時原始專案 HEAD 所指向之提交中的檔案——也就是最新的提交,而非你上次在編輯器中儲存檔案的時間點。這個指令不會移轉未提交的變更或新檔案。在編輯器中儲存,不等於在 Git 中提交。如果啟動第二個任務時第一個資料夾仍有未提交的變更,這些變更只會留在該資料夾中。
這不是整個儲存庫的備份,也不是整台電腦的隔離環境。它是同一專案的第二個工作資料夾,並可存取相同的分支與提交歷史。如需了解另一個工具中的類似機制,請參閱Claude Code 與 git worktree:平行任務。
準備工作:版本、專案信任狀態與提交
開始前請確認三件事。請在原始專案的資料夾中執行指令。
首先,確認 Codex CLI 版本。以下說明適用於 0.155.1 版;若是其他版本,請另行確認這些旗標的行為:
codex --version
其次,你需要一個本機 Git 專案,且其 HEAD 指向現有提交——也就是說,儲存庫中至少要有一個提交。否則就沒有可用來建立副本的來源。
第三,來源必須是受信任的:如果專案明確標記為不受信任,使用 --worktree 啟動會在建立副本前失敗。如果你才剛開始設定 Codex CLI,Codex(OpenAI):簡介與入門涵蓋了基本準備工作。
請事先查看此儲存庫現有工作副本的清單。啟動後可用它來比對:
git worktree list
使用不同資料夾有助於區分任務。如需了解與代理協作的整體做法,Ailoot 文件中的實用資源會有所幫助。
步驟:為第二個任務啟動獨立副本
啟用實驗性功能,並在獨立副本中啟動工作階段
請在原始專案的資料夾中執行指令,也就是你目前正在其中處理第一個任務的資料夾。
codex --enable worktrees --worktree預期結果:Codex 會從目前的 HEAD 建立新的專案工作副本,並在其中開啟代理工作階段。副本會處於 detached HEAD 狀態,沒有附加具名分支。這就是 0.155.1 版中此旗標的運作方式。
在原始專案的另一個終端機中再次列出工作副本
git worktree list預期結果:輸出會多出一行,顯示新副本的路徑與 detached HEAD 標記(若有分支則會顯示分支)。此清單表示 Git 已登記該副本,但無法確認代理已完成任務。若要確認檔案是否存在,請開啟清單中顯示的路徑並檢查其內容。
如何檢查結果並保留你的工作
在新副本中的第二個任務完成後,你需要另外儲存並移轉結果。--worktree 指令不會將變更合併至主要分支,也不會自動移轉結果。副本仍處於 detached HEAD 狀態,因此在其中建立提交本身不會建立新分支。如果你需要保留這些提交,請在刪除副本資料夾前將它們附加至分支,或移轉至主要專案。
結果尚未保留前,請勿刪除副本資料夾。確認工作資料夾乾淨,不能取代保留所需提交的步驟:這些提交可能仍未附加任何分支。
如果你同時在不同工具中處理任務,請事先規劃如何避免彼此干擾。Claude Code 與 Codex 一起使用介紹了如何讓兩個代理共同協作。
若啟動遭到中斷:尋找副本的位置
使用 --worktree 啟動可能因下列幾種原因而失敗:
- 先前未啟用此功能,且啟動指令未包含
--enable worktrees:Codex 會拒絕使用--worktree旗標啟動; - 你所在的資料夾不正確,或沒有提交:如果目前資料夾不是 Git 儲存庫,或尚未包含任何提交,就沒有可用來建立副本的來源;
- 專案明確標記為不受信任的來源:Codex 會拒絕使用
--worktree啟動工作階段。請先確認你開啟的是正確的專案。不要自動變更其信任狀態。
如果工作階段未能連結至新建立的副本,例如程序遭到中斷,工作資料夾不會自動刪除。請先查看工作副本清單,並在刪除任何內容前確認沒有 Codex CLI 工作階段仍在使用此副本:
git worktree list
請先開啟資料夾並儲存需要的變更,再將其刪除。即使代理工作階段未能完成啟動,副本仍可能留存。如果副本存在、已不再需要,且確定沒有任何工作階段正在使用,請從原始儲存庫執行 git worktree remove,並指定資料夾路徑,以手動移除副本。不要加上 --force:如果副本包含未提交或未追蹤的檔案,指令會拒絕刪除。若指令拒絕執行,請在不解除安全防護的情況下檢查資料夾內容。
更新 Codex CLI 後,請再次執行 codex --version,並再次用 git worktree list 檢查:實驗性旗標在不同版本間的行為可能有所不同。
更多資源與工具:Ailoot。
更多詳情
常見問題:Codex worktree:為第二個任務建立獨立工作副本 | Ailoot
第二個 worktree 會含未儲存或未提交編輯嗎?
不會。本文 CLI 從來源 HEAD 提交開始。未提交修改與新檔留在原資料夾,因此編輯器保存還不足以轉移。
乾淨 detached worktree 可以直接刪嗎?
乾淨資料夾仍可能有無具名分支的提交。先保存或轉移提交,確認無工作階段使用,再用一般 Git worktree 移除,不強制越過防護。