Worktree

Git worktree 让你同时检出多个分支,每个分支在独立的目录中。ServerCC 提供完整的 worktree 管理 — 无需离开应用即可创建、切换、合并和删除 worktree。

前提条件

Worktree 需要同时满足三个条件:(1) 服务器上已安装 Git,(2) 工作区是 Git 仓库,(3) 仓库至少有一次提交。如果任一条件不满足,创建 Worktree 按钮将被禁用并显示提示。

Worktree 列表

在会话选择器中,worktree 部分显示当前工作区的所有活跃 worktree。每个 worktree 显示:

  • 分支名 — 与此 worktree 关联的 Git 分支
  • 工作目录状态:
    • Clean — 无未提交的更改
    • Dirty — 有未提交的更改
  • 合并状态:
    • Ready to Merge — 有领先于基础分支的提交,可以合并
    • Merge Conflict — 检测到合并冲突(预检),需要手动解决
    • Merged — 该分支的工作已包含在基础分支中 — 即使经过 squash 或 rebase 合并也能识别
  • 提交计数 — 领先 (↑) 和落后 (↓) 基础分支的提交数量
  • 最新提交 — 最近一次提交的主题

状态在列表加载时计算;在终端里提交或合并之后,点击该部分底部的刷新 Worktree 可重新扫描。

创建 Worktree

在会话选择器中点击创建 Worktree 按钮。

1

输入分支名

为新分支选择一个名称(如 feature/loginfix/header-bug)。ServerCC 会验证名称是否已存在。

2

选择基础分支

选择从哪个分支创建 worktree。默认为当前分支。

3

创建

ServerCC 基于所选的基础分支创建带有新分支的 worktree。新的 worktree 目录位于 ~/.servercc/worktrees/<workspace>/<branch>/

在 Worktree 中工作

点击列表中的任何 worktree 即可打开。这会导航到 worktree 目录并打开一个限定于该分支的 Claude Code/Codex 会话。标题栏中的工作区名称会显示分支:ProjectName (feature-branch)

每个 worktree 都有独立的会话集 — 它们不与主工作区或其他 worktree 共享会话历史。

提示

你可以将一个 worktree 会话放入后台并同时打开另一个 worktree 或主工作区。每个都作为独立的后台实例运行。

合并 Worktree

当分支上的工作完成后,你可以直接在 ServerCC 中将其合并回主分支。

1

在 worktree 上向右滑动显示合并按钮。合并操作仅在 worktree 状态显示 Ready to Merge(有领先提交且无冲突)时可用。

2

ServerCC 将分支合并到当前分支。始终创建合并提交以保留清晰的历史记录。

3

合并成功后,worktree 目录和分支会自动删除(清理)。

注意

如果出现合并冲突,合并会自动中止以恢复干净状态。Worktree 会保留。你可以通过终端手动解决冲突后重试,也可以参考 Merge Conflict 状态提示在合并前修复冲突。

删除 Worktree

在 worktree 上向左滑动显示删除按钮。这会删除 worktree 目录和关联的 Git 分支。当你想完全丢弃该分支时使用。

注意

有运行中后台实例的 worktree 会显示运行中徽章,在实例停止之前无法打开。请先在运行中标签页停止实例。

Worktree 存储

Worktree 存储在服务器上的以下位置:

~/.servercc/worktrees/<workspace-name>/<branch-name>/

每个 worktree 都是标准的 Git worktree — 你也可以通过终端或桌面端的 git worktree 命令与它们交互。