Git worktree
Git worktree 为同一个仓库提供独立的工作目录与检出分支,适合隔离并行开发任务。它共享 Git 仓库对象,不共享一份可任意同时修改的工作区,也不自动隔离进程、端口和依赖。
选择来源
从目标项目的 worktree 列表确认父工作区、路径和分支,再发起子 worktree 创建。子工作区的关联信息帮助组织任务;最终以实际目录、分支和文件为准。
创建前记录父工作区的状态:
git status --short --branch
git worktree list
确认任务需要哪些未提交文件。创建 worktree 不能当成这些文件已经复制的证据;进入新目录后逐项核对输入。
创建后验证
- 输入能识别任务的名称并提交一次创建请求。
- 等待结果,核对返回路径、分支与父子关联。
- 在确认创建完成的目录中开启新会话。
- 检查依赖、环境配置、构建输出与服务端口,再开始工作。
关闭创建对话框不等于取消后台创建。遇到等待或结果不明,使用检查结果入口确认原请求;不要连续点击创建,产生多份目录。
区分创建与关联结果
| 结果 | 处理 |
|---|---|
| 已创建 | 核对实际目录后打开新会话 |
| 目录已创建但关联保存失败 | 检查目录与 Git 状态,再修复关联,不重复创建 |
| 创建失败且未提交创建结果 | 按界面提供的重试入口处理 |
| 结果不明或实例已变化 | 先检查原请求和当前列表,不推断创建成功或失败 |
界面中的请求状态与目录状态分别确认。重试不能覆盖一个已经创建成功的工作区。
在隔离目录中工作
每个 worktree 使用自己的终端工作目录。为开发服务器选择独立端口,检查依赖链接、环境文件与本地数据库,避免把目录隔离误认为运行资源已经隔离。
跨 worktree 共享身份、凭证或可写数据前,明确它们的 owner 和并发访问方式。不要通过复制整个用户工作区来搬运任务,也不要把别的 worktree 的产物混入提交。
示例:隔离一个界面修复
假设父项目中已有未完成的功能开发,现在需要单独修复菜单。先在父目录运行 git worktree list 并核对分支,再从项目的 worktree 入口创建名为 menu-fix 的子工作区。界面的关联名称用于组织任务,实际分支和目录以创建结果为准。
进入返回目录后运行:
git rev-parse --show-toplevel
git branch --show-current
git status --short --branch
确认目录独立,核对需要的源码是否存在,再根据仓库说明准备依赖。父目录中的未提交功能不应在未核对的情况下成为修复输入。为修复服务选择独立端口,不能停止父项目的开发服务来腾出端口。
修复完成后,在子目录审阅并交付代码,再回到父目录确认原有改动和服务仍然正常。交付提交的转移按仓库的合并或 PR 流程处理,复制整个工作区不是代码合并步骤。
完成与清理
先审阅、验证并按项目流程交付变更,再处理工作目录。清理前检查未提交文件、未推送提交、未跟踪产物及仍运行的进程。任务窗口关闭和聊天归档不等于这些内容已经保存。
开发任务的验收流程见在项目中开发。
通过 Git 清理工作目录
在保留了必要文件、提交和进程状态后,从其他工作目录检查并移除已完成的 worktree:
git worktree list
git worktree remove /absolute/path/to/completed-worktree
把示例路径替换为已核对的实际目录。Git 因改动而拒绝移除时,先处理需要保留的内容,不追加强制参数。手工删除目录也不能完成项目关联记录的核对。