让 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
相关推荐
延卿4 分钟前
nnDetection:基于 PyTorch 的目标检测框架
人工智能·pytorch·目标检测
电商API_1800790524731 分钟前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫
qizayaoshuap33 分钟前
# ❌ 井字棋 — 鸿蒙ArkTS Minimax AI算法与博弈系统设计
人工智能·算法·华为·harmonyos
雪隐36 分钟前
个人电脑玩AI-13让5060 Ti给你打工——我用 0.9B 小模型终结了"谁来记会议纪要"这个世纪难题
前端·人工智能·后端
-XWB-41 分钟前
【 LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(一)
人工智能·aigc·学习方法·ai编程
半个落月1 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
Anova.YJ1 小时前
AI通用能力(二)
人工智能
m沐沐1 小时前
【深度学习】卷积神经网络 数据增强、保存最优模型实现,详细解读
人工智能·python·深度学习·机器学习·cnn·数据增强
rain_sxr1 小时前
把多步串起来:Agent 前端编排的状态机与进度可视化
人工智能
硅谷秋水1 小时前
PhyGround:生成式世界模型中的物理推理基准测试
人工智能·深度学习·机器学习·计算机视觉·语言模型