修 Bug 和做新功能同时开工,Claude Code 用 worktree 留住两份改动

新工具猫目发布于 来源:Claude Code 官方资料
两个会话各自拥有文件和分支;真正要带回主线的,是检查过的提交,而不是混在一起的工作目录。

为什么值得关注

把并行代码任务放进不同Git工作区,让实验性功能和正在修复的问题各自留下可审阅成果。

适合谁:已有Git仓库、需要并行处理功能与修复任务的开发者

这次有哪些亮点

  • --worktree 一步创建分支工作区并启动会话
  • 退出时按工作区状态决定保留或清理,支持继续会话

使用前需要知道

仓库至少需要一个提交;新工作区需准备依赖和必要环境。worktree隔离文件与分支,不隔离端口、数据库等外部资源。

新功能刚改到一半,线上问题来了。如果两个 AI 会话都在同一个目录里动手,最后很难分清哪几处变化属于修复,哪几处只是实验。Claude Code 的 worktree 入口,可以把这两项工作放到不同文件目录和分支,再分别审阅。

这不是把任务描述拆成两段那么简单。Git worktree 给每个会话一份独立 checkout:共享仓库历史和远程地址,各自编辑文件。对于必须并行推进的开发工作,这份“分开的代码成果”比同时打开几个聊天窗口更重要。

一条命令,给任务一处落脚点

官方工作流给出命令:

claude --worktree feature-auth

当前worktree 文档说明,默认会在仓库根目录的 .claude/worktrees/feature-auth/ 创建工作区,并使用新分支 worktree-feature-auth。第二个终端换一个名字,就能启动另一份独立会话。仓库需要先有至少一个提交,才能确定起点。

教学情境中,你可以让一个会话调整登录界面,另一个修复登录异常。前者产生自己的组件与测试变化,后者留下修复提交。完成后分别看 diff、运行相关检查,再按项目习惯把确定需要的提交带回目标分支。这样,修复不用顺带带上尚未完成的界面实验。

目录分开了,开发环境还要接上

新 worktree 是从已有提交建立的 checkout,未提交内容不会自动成为它的起点。当前默认的 fresh 路线从仓库默认分支起步;需要基于当前本地 HEAD 时,应核对 worktree.baseRef: "head" 设置。没有可用远端默认分支时,默认路线才会回退到本地 HEAD。依赖、构建产物和被 Git 忽略的环境文件,也不能想当然认为都已准备好。官方建议在新目录初始化开发环境;需要随工作区带入的忽略文件,可以用 .worktreeinclude 配置。

文件隔离也不会为两个开发服务器自动分配端口,更不会各自复制数据库。两项任务如果操作同一个外部资源,仍要安排不同端口或独立测试数据。这是实际并行工作的环境问题,不能仅靠分支名字解决。

因此,适合交给这条路径的是能明确拆开的目标,而不是让两个会话同时修改同一处公共接口,再期待最后自然拼起来。接口约定可以先保持一致,集成时仍要检查两个分支组合后的行为。

结束时,保留有用成果

退出交互会话时,Claude Code 会检查工作区状态。有改动、未跟踪文件或新提交时,会询问保留还是删除;保留会留下目录和分支,便于继续。文档也提醒,非交互 -p 运行没有相同的退出提示,不自动清理工作区。

这一步值得认真看:实验失败可以清掉,已完成但尚未合并的工作应保留。不要因为终端会话结束,就把目录当临时缓存处理。

Claude Code 总览介绍了读取仓库、编辑文件和运行命令的能力,使用仍需要受支持的账号或提供方配置。对于已在用它的开发者,我会在“两个任务都要留下独立代码结果”时打开 worktree。它让并行工作有清楚的收尾,也让队友可以逐项审阅每份改动。

原始资料:Claude Code 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享