用工作树隔离任务
在 Onevium 创建独立的任务目录,选择起始分支和子仓库,检查结果后再合并改动。
工作区与会话工作树是同一 Git 仓库的另一份工作目录。适合让 AI 尝试修改,同时保留原目录中的工作。普通本地会话使用原目录;开启工作树后,新任务使用独立目录和分支。
1. 创建工作树会话#
- 在目标项目中新建会话,确认项目路径。
- 在输入区的项目与分支一行,勾选右侧的工作树(图 1)。
- 点击起点。通常保留当前分支;需要其他版本时选择其他分支…。只有要接着原目录中尚未提交的修改工作时,才勾选包含本地未提交改动。
- 发送第一条消息。Onevium 此时才创建目录和
onevium/…分支,准备完成后开始任务。
图 1:右侧开启工作树,左侧选择起点。1.2.4 开发界面的真实组件演示,使用模拟项目,尚未发送任务。
第一次可以发送:
先确认当前工作目录、Git 分支和包含的仓库。
告诉我本次任务会修改哪份文件,暂时不要改文件。
继续这条会话会复用同一个工作树,不会每发一条消息就新建。Onevium 会记住项目的工作树开关,下次新建会话时先看一眼是否仍勾选。
2. 项目下面还有其他仓库#
例如项目目录里有两个独立 Git 仓库:app 和 website。
- 开启工作树后,点击起点或选择仓库。
- 在仓库列表勾选这次需要修改的仓库(图 2)。只改网站就选
website;同时改应用和网站就两个都选。 - 在起点列表点击对应仓库,为它单独选择分支。需要带入未提交改动时,也要逐仓勾选。
图 2:上方勾选仓库,下方分别设置起点。沿用同一开发界面演示,app 和 website 均为模拟仓库。
Onevium 会在新目录中保留所选仓库的相对位置,并为它们分别创建工作树。它们仍是独立仓库,分别提交、分别合并。
| 项目结构 | 创建结果 |
|---|---|
| 项目根目录本身是 Git 仓库 | 根仓库始终包含;独立子仓库按勾选结果加入 |
| 项目根目录只是装着多个仓库的普通文件夹 | 至少选一个仓库;若只有一个,会自动选中。不会整包复制原文件夹里的普通文件 |
| 子仓库没有勾选 | 不会进入新工作树,原目录中的子仓库仍保留 |
这里的独立子仓库不包括 Git 子模块(submodule);子模块不会自动检出。需要的仓库未出现在列表中时,可以直接把该仓库目录作为项目打开。
3. 检查结果,再保留改动#
准备完成后,会话会显示工作树 · 分支名。在会话中核对实际路径和分支,再开始修改;具体文件差异见文件、终端与 Review。
改完不会自动合并回原分支。 检查差异、运行项目检查后,再明确要求助手提交,并合并到你指定的目标分支。多个仓库要分别处理。
要比较两种方案,就分别新建两个工作树会话。在已有工作树中继续或新建会话,会共用那一份文件;分屏显示也不会再隔离一份。
4. 清理与恢复#
- 打开设置 → 工作树 → 常规,在托管的工作树中找到目标,确认成果已保留后点击删除(图 3)。自动清理只处理没有未保存改动的旧工作树。
图 3:在目标工作树右侧点“删除”。真实开发界面组件演示,项目和路径均为模拟数据。
- 阅读删除确认框(图 4):有未保存改动时,确认能创建快照;若提示无法创建,先取消并保留文件。手动删除还会归档关联会话。
图 4:确认快照和归档提示后再删除。本图仅演示确认框,未执行删除。
被 Git 忽略的本地配置(例如 .env.local)不在快照内,需另外保留。
- 要恢复时,打开原会话,点击还原工作树(图 5),等待准备完成。如果会话已归档,先到设置 → 归档会话中点击恢复,再打开会话。
图 5:在原会话中点“还原工作树”。沿用同一开发界面演示和模拟路径。
删除或还原工作树都不等于合并代码。
常见问题#
| 现象 | 怎么做 |
|---|---|
| 看不到“工作树”开关 | 确认电脑上 Git 可用,且项目本身或下面有 Git 仓库;空文件夹不能直接创建工作树 |
| 原目录有修改,新目录里没有 | 新建时从当前分支开始,并勾选“包含本地未提交改动”;已有工作树不会实时同步原目录 |
缺依赖或 .env 配置 | 在新目录按项目说明安装依赖。被 Git 忽略的配置可按需列入对应仓库根目录的 .worktreeinclude,供新建工作树时复制 |
| 环境脚本报错 | 在创建进度中点“查看日志”,按错误修正环境;不要把目录创建成功当作项目已经能运行 |