Dev Workflow · Git

用 git worktree 做并行开发(也适用于 AI 协作)

2026-01-17 21:11 · 工程师 / AI 辅助开发 · git worktree 基础 + 多 Agent 协作流程

把每个任务/Agent 隔离到独立工作区与分支,让并行变更可审、可回滚、可合并。


要点速览

关键洞见

  1. worktree 解决的是“并行 checkout”,不解决“并行改同一文件”的冲突;冲突依然要 merge/rebase。
  2. 把 AI 当作“提交候选生成器”:它在自己的 worktree 里产出可复现的变更,你只需要审阅与合并。
  3. 稳定协作来自约定:命名、验收命令(tests/lint)、合并策略、清理策略缺一不可。

步骤指南(新手友好)

新手模式

  1. 先懂边界:worktree 做什么
    读一遍 git help worktree:它管理同一仓库的多个 working tree;每个 worktree 都是独立目录/独立 HEAD(但共享对象库)。
  2. 为任务开目录:add 一个 worktree
    示例:mkdir -p .worktrees 后运行 git worktree add -b ai/alice/fix-foo .worktrees/ai-alice-fix-foo origin/main
  3. 让 AI 只在自己的 worktree 改
    在新终端把 AI 工具的工作目录指到 .worktrees/ai-alice-fix-foo;要求它“先跑测试→改→再跑测试→给出 diff/commit”。
  4. 用 diff 评审:再决定合并
    在主工作区审阅:git diff main..ai/alice/fix-foo 或直接开 PR;通过后再 merge/squash。
  5. 合并后清理:remove + prune
    完成后:git worktree remove .worktrees/ai-alice-fix-foo;必要时 git worktree prune 清理残留元数据。

检查清单

  • 每个 worktree 绑定独立分支(不要在多个 worktree 同时 checkout 同一分支)。
  • worktree 目录统一放在 .worktrees/(并写入 .gitignore)。
  • 给每个 Agent 写清“验收命令”(例如 npm test/pytest/cargo test)。
  • 合并策略先定:merge/squash/rebase 选一种并遵守。
  • 定期维护:git worktree list + 清理废弃 worktree/分支。
奥卡姆优先(只保留必要的)
  • 先从“1 个 Agent + 1 个 worktree”开始跑通闭环。
  • 并行前先拆任务:尽量让不同 Agent 改不同模块/文件集合。
  • 把约束写进任务单(边界/禁止改动/必须通过的命令),减少来回对话成本。

SVG 图解

专家视角

Git core team(git-worktree 手册) — 官方文档视角:定义、约束与推荐用法

“A git repository can support multiple working trees, allowing you to check out more than one branch at a time.” — git-worktree(1) — DESCRIPTION

方案对比

方案 适用场景 收益 代价 关键风险 第一步
A 个人/小团队:本地并行多个任务/Agent 零 clone、切换快、目录隔离强;适合把 AI 输出当作“候选提交”。 依赖纪律:命名、清理、合并规则必须一致,否则很快混乱。 误删未提交 worktree;或把变更做在错误目录导致审阅困难。 约定 .worktrees/ 目录 + 分支前缀 ai/<agent>/
B 团队/CI:Agent 在容器/远端并行跑 环境一致、可审计;可并发跑测试/静态检查,并自动产出 PR。 搭建与权限成本高;流程复杂后容易被绕过。 PR 堆积、噪声变多;或因为脚本不严谨导致合并事故。 写脚本:创建分支→准备 worktree/环境→跑 Agent→推送→开 PR。

证据与置信度

主张 证据 置信度 来源
同一仓库支持多个 worktree,可同时 checkout 多分支 官方手册 DESCRIPTION 段落的定义与示例(见来源)。 git-worktree(1) manual

下一步

细节(可选)

二级页面

保持主报告简洁。复杂推导、长表格、深度材料放到二级 HTML 页面,再在这里以链接方式引用。

来源

收尾总结

把 worktree 当作“并行工作目录”,把 AI 当作“提交候选生成器”。

  • 用分支+worktree 隔离并行变更:可审、可回滚、可控合并。
  • AI 协作的关键是流程:任务拆分→验收命令→diff/PR 评审→合并。
  • 从小规模开始,形成命名/清理/合并的团队约定,再逐步上 CI/自动 PR。

一个下一步动作

现在就选一个小任务:创建 `ai//trial` worktree,让 AI 完整跑一遍“改动→测试→commit→PR/merge→清理”。

“用一句收束全篇的核心引言。
可换行以形成节奏。”

— Name