Skip to content
FunCoding

Search

Search docs, Skills and MCP

Worktree 恢复与退出

按会话存储范围恢复绑定,并理解保留、删除和隔离 agent 的保护规则。

This page has not been translated into English yet. The original Chinese version is shown below.

创建 worktree 后,先确认当前分支与路径,再决定是保留、退出还是删除。删除目录和分支会影响其中尚未交付的工作。

显示与恢复

Footer 默认显示 worktree-;ui.hideBuiltinWorktreeIndicator=true 可隐藏,custom statusline 仍收到 worktree.name/path/branch/original_cwd/original_branch,只在活动 worktree 时存在。

绑定保存在 /.worktree.json。普通恢复会检查目录存在,下一条 prompt 给一次路径提醒;目录消失则删除过期 sidecar,不报 worktree 恢复错误。

TUI 显示 INFO 与提醒,headless 还发 worktree_restored JSON system 事件,ACP 在下次 prompt 附带 notice。普通绑定恢复不自动 chdir。

启动 Worktree 的会话范围

--worktree 启动的会话记录位于该 checkout 自己的 chats 目录,恢复时需再次传相同 worktree:

qwen --resume <session-id> --worktree=my-feature

裸 --resume 加新 worktree 名可能看到空选择器,因为主 checkout 会话不在其中。不能用在 first 创建的 ID 加 --worktree=second 跨 slug 恢复;应新会话重启。

官方另写“显式 --worktree 覆盖保存绑定”,只应在会话本身能按存储范围找到后理解;不能用这句话绕过上述查找限制。

保留与移除

exit_worktree 要求 name 和 action(keep/remove)。keep 保留目录与分支;remove 删除两者,脏工作区需 discard_changes:true 才可越过未提交保护。该覆盖需要用户确认,AUTO_EDIT 也不会把删除当普通自动编辑。

删除前有三道检查:创建会话必须匹配;未提交 tracked/untracked 更改需显式丢弃确认;分支存在没有其他本地/远端引用可达的提交则无条件阻止,没有“丢弃提交”开关。先合并、推送或让分支另有保留引用,再处理。

双按退出快捷键时的对话框显示新提交与未提交文件数量,可 Keep、Remove 或 Cancel。若 Git 状态读取失败,数量不可信,应先保留或取消诊断;其 Remove 同样受保护规则约束,不能只凭按钮文本断言可丢弃未合并提交。

subagent 隔离

agent 的 isolation:"worktree" 为非 fork subagent 建 agent-7hex 临时 checkout。完成后无差异自动移除;有差异保留,路径和分支附于结果,供人工检查后整合或删除。

必须设置非 fork subagent_type,fork 不支持该隔离。通常遵循后台行为,run_in_background:false 可等内联结果。调用者自有 working_dir 的匿名启动是另一种生命周期:前台运行,显式后台拒绝,不要把两者参数随意混用。

崩溃后遗留目录另受过期清理规则约束。