利用 git worktree 并行处理 Codex、Claude Code 等工作
Source: Dev.to
The problem
在传统的 Git 仓库中,你会有:
- 工作目录中的源代码,例如
/Users/qlerebours/Projects/traveledmap。 - 已检出的分支,例如
feat/my-main-feature。 - 包含项目历史的
.git文件夹。
切换分支会改变当前目录中的文件,这使得在多个特性上同时使用 Codex、Claude Code 等工具变得困难。将项目克隆到第二个文件夹并不理想,因为会复制(可能很大的).git 文件夹。
git worktree
git worktree 允许你在同一个 Git 仓库上挂载多个工作目录,同时只保留一个 .git 目录。
# Add a new worktree for a parallel task
git worktree add ../traveledmap-fix-wording fix/add-form-validations
运行该命令后,文件夹结构如下:
/Users/qlerebours/Projects/traveledmap/ (branch feat/my-main-feature)
/Users/qlerebours/Projects/traveledmap-fix-add-form-validations/ (branch fix/add-form-validations)
- 单一的
.git文件夹位于/Users/qlerebours/Projects/traveledmap/。 - 每个 worktree 使用自己的分支。
- 提交会立即在所有 worktree 中可见。
这种设置让你的代码助手能够并行处理两个特性。
Using git worktree with AI development assistants
-
在 Codex(或 Claude Code)中 开始新对话,并选择 Worktree 和 from develop 作为新分支的基础。
-
当你发送提示时,Codex 会宣布它正在创建 worktree。你可以通过以下方式验证:
git worktree list -
worktree 将出现在类似
/Users/qlerebours/.codex/worktrees//traveledmap的路径下。
Test the changes
如果你想在不将更改拉取到本地的情况下测试它们:
-
进入 worktree 文件夹。
-
由于 worktree 是从
develop分支开始的,需要设置环境:cp .env.example .env pnpm i -
运行项目:
pnpm run dev -
若需要新的更改,Codex 会将它们添加到已有的 worktree 中,你可以再次进行测试。
Taking control of the changes
你有多种方式在本地继续工作:
- 在你喜欢的代码编辑器中打开 worktree 文件夹并进行所需修改。
- 使用 Codex 对话中的 “Hand off to local” 按钮;这会将更改提交到仓库。
- 使用 “Create a branch” 按钮,它会创建一个新分支并推送,让你直接打开 PR。
Further reading
完整的工作流文档可在 Codex 文档中查阅。
了解 git worktree 能为与 AI 开发助手的高效协作打开大门。如有疑问,欢迎通过电子邮件或 LinkedIn 与我联系。