Worktrunk:并行工作树、生命周期控制与源码分析
Worktrunk 上手:用一个临时分支得到可检查的结果
从一次最小工作树练习开始,区分创建成功与终端切换成功,避免首次试用就触发钩子或清理操作。
你将学会
- 先准备可以放弃的学习环境
- 只创建一次,分别核对两个结果
- 先确认完成条件,再学习删除
开始前需要
- 基础 Git 分支和命令行导航知识
- 可用于选做练习的一次性仓库
解释工作树边界,核对首次检出结果,并在采用自动化前审阅配置命令。
先看结论
- 第一次练习使用一次性仓库,并禁用生命周期钩子。
- 工作树创建与父终端导航是两项不同的检查。
- 不要用合并或强制删除来结束上手教程。
先准备可以放弃的学习环境
准备一个已有初始提交的一次性仓库,使用经过审阅的 Worktrunk 安装,并确认当前终端的集成方式。操作前检查用户与项目配置:即使是新仓库,也可能继承用户钩子;陌生仓库还可能包含 .config/wt.toml。安装篇会拆解这些配置层,而不是让读者直接复制全局设置命令。
第一次练习不启动智能体、不安装依赖,也不合并分支。macOS 或 Linux 文档使用 wt,Windows 应直接调用 git-wt,避免与 Windows Terminal 重名。配套命令是提供给读者的练习步骤,不是我们已经执行并验证过的终端记录。
只创建一次,分别核对两个结果
在上述一次性仓库中,wt switch --create demo-review --no-hooks 请求新建分支和工作树,并禁用这次操作的 Worktrunk 生命周期钩子。Windows 使用对应命令名。创建成功的提示既不能证明父终端切换了目录,也不能证明分支包含有效成果;应分别检查当前分支、目录、状态和 Git 工作树清单。
如果 git worktree list --porcelain 已经列出新工作树,而终端仍在旧目录,应先排查终端集成,不要反复创建同名分支。源码区分“包装函数已经安装”和“当前调用确实经过包装函数”。直接运行二进制绝对路径可能绕过集成,而 git wt 作为 Git 子进程也不能替父终端切换目录。
先确认完成条件,再学习删除
验收记录应包含原分支、新分支、新路径,以及目标工作树是否干净。如果发现分支已经存在,先停下来查看它,不要为了继续教程而加入强制参数。如果创建报错,保留错误信息和原状态;目录存在本身不能证明整个操作成功,半完成状态也需要单独识别。
这次练习结束时返回原目录即可,暂时保留一次性工作树,等理解删除行为后再清理。不要把 wt merge 当作退出命令:其默认流程可能暂存修改、压缩提交、变基并移除源工作树。证明两个任务拥有独立检出目录,并不需要执行合并或删除。
如何选择
| 比较维度 | 方案 A | 方案 B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
实施步骤
- 1
审阅配置,记录原分支和目录。
- 2
禁用钩子后创建 demo-review。
- 3
核对分支、路径、状态与工作树清单。
- 4
返回原目录,暂不清理工作树。
可复制示例
# 仅在已有初始提交的一次性仓库中练习。
# Windows 使用 git-wt 替代 wt。
wt switch --create demo-review --no-hooks
git branch --show-current
git status --short
git worktree list --porcelain常见问题
为什么创建以后目录没有变化?
一种可能是终端包装函数没有生效或被绕过;应先确认工作树本身是否已经创建。
--no-hooks 能消除所有风险吗?
不能。它关闭该操作支持的 Worktrunk 钩子,不会取消 Git 状态变更,也不是整个环境的执行沙箱。
资料来源
- Worktrunk / README.md来源核查 2026-09-14
- Worktrunk / docs/src/content/docs/hook.md来源核查 2026-09-14
- Worktrunk / src/output/shell_integration.rs来源核查 2026-09-14