让 AI Agent 高效并行开发的命令-git worktree

应用场景

在实际的日常开发中,我们总是会有很多场景,需要来回切换分支,暂存代码,例如:

  1. 场景 1:修复紧急问题(正在开发,临时插播) :正在 feature 分支开发新功能,写了一半,这个时候有紧急的生产问题要修复,需要切换到 release 分支做修复工作。
  2. 场景 2:大型重构工作(回看对比) :做一个大型重构工作,改了大量代码,改出问题,想回来看看原来没修改前的代码是什么样的。
  3. 场景 3:并行开发(同步公共修改): 同时开发两个迭代,开了不同的 feature 分支,其中一个 feature1 分支做了一些公共修复或其基类、工具类代码的修改,想同步到另一个 feature2 分支。

传统解决方式

  1. 场景 1: git stash(暂存) ->git checkout release-> 修复 ->git checkout feature->git stash pop
  2. 场景 2: 在同一个 IDE 里来回切换分支,或者在 Git 历史里翻找。
  3. 场景 3:feature1 提交 -> 切到 feature2 ->cherry-pick

git worktree

git worktree 就是在同一个 Git 仓库中,通过共用同一套历史记录,让你能同时在多个不同的工作目录下并行开发、测试或修复多个分支,而无需来回切换或重新克隆。

git worktree有点像 git clone,在物理磁盘上存多一份代码,但是是用同一个 .git 目录管理。

实践

假设现在有一个 main 分支,然后要切换到 hotfix 改 bug。

文件目录内容:

1. 创建新 worktree 目录

csharp 复制代码
// git worktree add [worktree 目录地址] [分支名称]
git worktree add ./worktree-hotfix hotfix

如果没有 hotfix 分支,想在当前分支拉出一条新分支就加上 -b参数,即:git worktree add ./worktree-hotfix -b hotfix

成功之后会发现多了一个文件夹,里面的代码和 hotfix 分支的一样:

一般来讲,目录会设置为../worktree 目录名,和当前项目地址同级,比较好管理依赖,这里为了方便演示,就放在了项目内容。

2. 在 worktree-hotfix 中修改bug,并提交代码

bash 复制代码
cd worktree-hotfix

修改代码。

提交代码:git add . -> git commit -m "fix: 修复了一个 bug"-> git push

然后代码就会推送到 hotfix 的远程分支上。

重点

  • 分支和 worktree 是一一对应的,你在不同的 worktree 对应的是不同的分支。
  • 上述例子中:根目录代表的是main分支,而./worktree-hotfix代表的是 hotfix 分支。
  • 简单理解:切目录就等于切分支。

3. 移除 worktree

这里有两种移除 worktree 分支的方式:

  • 方式 1:直接删除,然后清理记录
    • 删除整个worktree-hotfix目录
    • 运行git worktree prune移除失效的记录
  • 方式 2(推荐):直接使用 remove 命令删除
    • 运行git worktree remove [目录名称]

我这里本来就在 worktree-hotfix 目录,所以目录是./,如果你在根目录,目录名称是./worktree-hotfix。当然,也可以使用绝对路径

4. 合并代码

最后将 hotfix 分支合并到 release 或其他分支即可。

至此,就是通过 git worktree 完成一个紧急 bug 的修复的全过程。其他常见场景的 worktree 操作也是类似的。过程中可以通过 cd 命令在不同的分支上来回切换而不需要暂存文件。

其他命令

查询

查看当前有哪些 worktree,目录地址是什么,对应的分支是哪条:

复制代码
git worktree list

移动

将一个 worktree 目录移动到别的地方:

arduino 复制代码
git worktree move ./worktree-hotfix ../

锁定

防止 worktree 被移动或被删除:

bash 复制代码
git worktree lock /Users/ut/Documents/learn/worktree-hotfix

解锁

bash 复制代码
git worktree unlock /Users/ut/Documents/learn/worktree-hotfix

和 Agent 的结合

  • 你可以通过 git worktree 利用不同的 Agent 开发不同的功能,如 Agent1 在 worktree1 上工作,让 Agent2 在 worktree2 上工作,互相独立,互不影响。
  • 也可以将修复临时 bug 的 worktree 管理流程写成一个 skills,例如:每次让 Agent 改 bug,先新建一个 worktree,在里面改完 bug,验证完没有问题,再自动删除 worktree,将代码合并到指定分支。
  • 目前部分 AI IDE 已经能自动利用 worktree 并行开发,只要通过一些配置即可做到。如:常见工作流程 - Claude Code Docs
相关推荐
Ray Liang2 小时前
AI基于Spec开发是巨坑?
人工智能·架构设计·mindx
哔哩哔哩技术3 小时前
游戏数据分析Agent的全栈架构演进
人工智能·agent
陆通3 小时前
10分钟Windows系统安装迷你版的OpenClaw ,小小龙虾Nanobot
人工智能
老张的码3 小时前
飞书 × OpenClaw 接入指南
人工智能·后端
mCell3 小时前
分享一个常用的文生图提示词
人工智能·llm·数据可视化
踩着两条虫3 小时前
如何让AI精准修改你的Vue代码?揭秘增量更新器实现原理
人工智能·openai·ai编程
ZFSS4 小时前
SeeDance Tasks API 的对接和使用
前端·人工智能
睿智的仓鼠4 小时前
🦞OpenClaw 快速部署及使用指南
前端·人工智能