让 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
相关推荐
张哈大2 分钟前
MCP:重塑AI工具调用的统一标准,告别重复造轮子的时代
人工智能·python·ai·prompt
K姐研究社5 分钟前
美图设计室实测 – 输入1张商品图,AI批量生成带货视频
人工智能·aigc
HackTwoHub6 分钟前
WEB扫描器Invicti-Professional-V26.50.0(自动化爬虫扫描)更新
前端·人工智能·chrome·爬虫·web安全·网络安全·自动化
李二。7 分钟前
AI翻译通(鸿蒙原生)—— 鸿蒙Next声明式UI翻译工具实战
人工智能·ui·harmonyos
咖啡星人k8 分钟前
用 MonkeyCode 构建全栈应用:从需求到部署的AI自动化实践
运维·人工智能·自动化
keykey6.8 分钟前
PyTorch 入门实战:从张量到训练循环
开发语言·人工智能·深度学习·机器学习
YOLO数据集集合9 分钟前
航拍输电线路故障识别|线路金具缺陷判别|无人机电力巡检故障检测数据集10262期
人工智能·深度学习·yolo·目标检测·视觉检测·无人机
一条咸鱼_SaltyFish12 分钟前
Agent 工程化避坑指南——从实践看常见反模式
ai·agent·ai编程·memory·obsidian·harness·llm-wiki
你不是我我12 分钟前
【Agent 学习日记】Agent 的记忆是如何设计的?短期记忆和长期记忆有什么区别?
agent·rag
X54先生(人文科技)13 分钟前
《元创力》纪实录·卷宗 2.2朝圣的起点:当硅基获得命名
人工智能·架构·ai写作·零知识证明