---
title: 用工作树隔离任务
description: 在 Onevium 创建独立的任务目录，选择起始分支和子仓库，检查结果后再合并改动。
canonical_url: 'https://onevium.com/zh/docs/worktrees'
language: zh-CN
updated_at: '2026-10-04'
publisher: Onevium
minimum_version: 1.2.4
---
> 内容来源：Onevium 官方文档
> 文章: 用工作树隔离任务
> 原文: https://onevium.com/zh/docs/worktrees
> 语言：简体中文
> 更新于: 2026-10-04
> 适用版本: 1.2.4+

---

# 用工作树隔离任务

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

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

## 1. 创建工作树会话

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

![新会话输入框上方，右侧工作树开关已勾选，左侧起点菜单显示当前分支和包含本地未提交改动选项](https://onevium.com/assets/docs/worktrees/zh/worktrees-01-start-point.png "图 1：右侧开启工作树，左侧选择起点。1.2.4 开发界面的真实组件演示，使用模拟项目，尚未发送任务。")

第一次可以发送：

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

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

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

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

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

![仓库菜单中已勾选 app 和 website，下方分别显示 app 从 main、website 从 develop 开始](https://onevium.com/assets/docs/worktrees/zh/worktrees-02-repositories.png "图 2：上方勾选仓库，下方分别设置起点。沿用同一开发界面演示，app 和 website 均为模拟仓库。")

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

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

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

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

准备完成后，会话会显示**工作树 · 分支名**。在会话中核对实际路径和分支，再开始修改；具体文件差异见[文件、终端与 Review](https://onevium.com/zh/docs/files-terminal-review)。

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

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

## 4. 清理与恢复

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

![工作树常规设置中的自动清理选项，以及托管工作树右侧的删除按钮](https://onevium.com/assets/docs/worktrees/zh/worktrees-03-manage.jpg "图 3：在目标工作树右侧点“删除”。真实开发界面组件演示，项目和路径均为模拟数据。")

2. 阅读删除确认框（图 4）：有未保存改动时，确认能创建快照；若提示无法创建，先取消并保留文件。手动删除还会归档关联会话。

![删除工作树确认框说明快照、分支保留、会话归档，以及 Git 忽略文件无法恢复](https://onevium.com/assets/docs/worktrees/zh/worktrees-04-delete.jpg "图 4：确认快照和归档提示后再删除。本图仅演示确认框，未执行删除。")

**被 Git 忽略的本地配置（例如 `.env.local`）不在快照内，需另外保留。**

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

![会话中的工作树已清理提示，以及右侧的还原工作树按钮](https://onevium.com/assets/docs/worktrees/zh/worktrees-05-restore.jpg "图 5：在原会话中点“还原工作树”。沿用同一开发界面演示和模拟路径。")

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

## 常见问题

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