Git Worktree 与会话分叉
区分新建、移动改动、复制对话及恢复已有 worktree,配置基线与路径。
This page has not been translated into English yet. The original Chinese version is shown below.
Worktree 为同一个 Git 仓库提供另一份 checkout,适合隔离并行任务。它与只复制对话的 session fork 不同,也不会自动复制所有未提交文件。
选择操作
| 入口 | 会话与文件行为 |
|---|---|
| --worktree[=NAME] | 新建或复用隔离 worktree 并在其中启动 |
| /worktree [branch 或 task] | 切到新 worktree,未提交改动留在原处 |
| /move [branch 或 task] | 将未提交改动移到新 worktree 并切换 |
| /new worktree | 新建空会话和 worktree,原会话及工作目录保持 |
| /fork worktree | 保留当前对话上下文,在新 worktree 分叉 |
| /fork [NAME] | 仅分叉会话;运行中的原会话继续在后台工作 |
这些 Git 操作需要仓库。task 可以是多行描述,作为新 worktree 的初始提示;省略参数时可按对话自动生成分支名。
启动示例
copilot --worktree docs-update -i "Update the installation guide and validate its links."worktree 不能与 --resume、--continue、--connect 合用,它们竞争会话位置选择。需要恢复已有会话时使用对应恢复入口,不要同时请求新工作目录。
分支基线
worktreeBaseRef 默认 head,即当前 checkout 的 HEAD。设置为 defaultBranch 后,/worktree、/new worktree、/move 和 --worktree 使用远程默认分支。
/fork worktree 始终从 HEAD 分支,不受该设置影响。对话上下文被保留并不意味着所有文件改动也复制过去,选择 /move 前应确认确实需要转移未提交内容。
目录布局
默认目录为 <repo>.worktrees/,分支名中的斜杠会展平成连字符。worktreePathTemplate 支持 {repoPath}、{repo}、{branch}、{branchSlug},例如:
{
"worktreePathTemplate": "~/src/worktrees/{repo}/{branch}"
}自定义位置会影响之后创建的 worktree。加载的 --add-dir 和 --plugin-dir 相对路径按最终会话目录解析,不能按原终端位置想当然地计算。
旧命令
/worktree new 已弃用,改用 /new worktree;new 是保留子命令字,不能作为旧入口的字面分支名。完成任务后仍需检查 Git diff、测试和分支状态;会话结束不等于分支已合并。