跳转到正文
Onevium文档
本页内容

用工作树隔离任务

在 Onevium 创建独立的任务目录,选择起始分支和子仓库,检查结果后再合并改动。

工作树是同一 Git 仓库的另一份工作目录。适合让 AI 尝试修改,同时保留原目录中的工作。普通本地会话使用原目录;开启工作树后,新任务使用独立目录和分支。

1. 创建工作树会话#

  1. 在目标项目中新建会话,确认项目路径。
  2. 在输入区的项目与分支一行,勾选右侧的工作树(图 1)。
  3. 点击起点。通常保留当前分支;需要其他版本时选择其他分支…。只有要接着原目录中尚未提交的修改工作时,才勾选包含本地未提交改动。
  4. 发送第一条消息。Onevium 此时才创建目录和 onevium/… 分支,准备完成后开始任务。

图 1:右侧开启工作树,左侧选择起点。1.2.4 开发界面的真实组件演示,使用模拟项目,尚未发送任务。

第一次可以发送:

text
先确认当前工作目录、Git 分支和包含的仓库。
告诉我本次任务会修改哪份文件,暂时不要改文件。

继续这条会话会复用同一个工作树,不会每发一条消息就新建。Onevium 会记住项目的工作树开关,下次新建会话时先看一眼是否仍勾选。

2. 项目下面还有其他仓库#

例如项目目录里有两个独立 Git 仓库:app 和 website。

  1. 开启工作树后,点击起点或选择仓库。
  2. 在仓库列表勾选这次需要修改的仓库(图 2)。只改网站就选 website;同时改应用和网站就两个都选。
  3. 在起点列表点击对应仓库,为它单独选择分支。需要带入未提交改动时,也要逐仓勾选。

图 2:上方勾选仓库,下方分别设置起点。沿用同一开发界面演示,app 和 website 均为模拟仓库。

Onevium 会在新目录中保留所选仓库的相对位置,并为它们分别创建工作树。它们仍是独立仓库,分别提交、分别合并。

项目结构创建结果
项目根目录本身是 Git 仓库根仓库始终包含;独立子仓库按勾选结果加入
项目根目录只是装着多个仓库的普通文件夹至少选一个仓库;若只有一个,会自动选中。不会整包复制原文件夹里的普通文件
子仓库没有勾选不会进入新工作树,原目录中的子仓库仍保留

这里的独立子仓库不包括 Git 子模块(submodule);子模块不会自动检出。需要的仓库未出现在列表中时,可以直接把该仓库目录作为项目打开。

3. 检查结果,再保留改动#

准备完成后,会话会显示工作树 · 分支名。在会话中核对实际路径和分支,再开始修改;具体文件差异见文件、终端与 Review。

改完不会自动合并回原分支。 检查差异、运行项目检查后,再明确要求助手提交,并合并到你指定的目标分支。多个仓库要分别处理。

要比较两种方案,就分别新建两个工作树会话。在已有工作树中继续或新建会话,会共用那一份文件;分屏显示也不会再隔离一份。

4. 清理与恢复#

  1. 打开设置 → 工作树 → 常规,在托管的工作树中找到目标,确认成果已保留后点击删除(图 3)。自动清理只处理没有未保存改动的旧工作树。

图 3:在目标工作树右侧点“删除”。真实开发界面组件演示,项目和路径均为模拟数据。

  1. 阅读删除确认框(图 4):有未保存改动时,确认能创建快照;若提示无法创建,先取消并保留文件。手动删除还会归档关联会话。

图 4:确认快照和归档提示后再删除。本图仅演示确认框,未执行删除。

被 Git 忽略的本地配置(例如 .env.local)不在快照内,需另外保留。

  1. 要恢复时,打开原会话,点击还原工作树(图 5),等待准备完成。如果会话已归档,先到设置 → 归档会话中点击恢复,再打开会话。

图 5:在原会话中点“还原工作树”。沿用同一开发界面演示和模拟路径。

删除或还原工作树都不等于合并代码。

常见问题#

现象怎么做
看不到“工作树”开关确认电脑上 Git 可用,且项目本身或下面有 Git 仓库;空文件夹不能直接创建工作树
原目录有修改,新目录里没有新建时从当前分支开始,并勾选“包含本地未提交改动”;已有工作树不会实时同步原目录
缺依赖或 .env 配置在新目录按项目说明安装依赖。被 Git 忽略的配置可按需列入对应仓库根目录的 .worktreeinclude,供新建工作树时复制
环境脚本报错在创建进度中点“查看日志”,按错误修正环境;不要把目录创建成功当作项目已经能运行