工作树
Worktree
中级通用工作树(Worktree)是 Git 中供你查看和修改项目文件的目录;Git 也能为同一个仓库建立多个工作树,让不同分支各有一套文件。这样你不用反复切换分支,就能一边修线上问题,一边继续开发新功能。
你可能会说:「我想同时改新功能和修线上问题,能不能各用一个目录,别来回切分支?」
动手看看修支付故障,继续做优惠券
1
商城已有支付页面,当前在项目目录 shop 的 main 分支。这个目录就是一棵工作树,里面的文件可以查看和修改。
要点工作树怎样让你同时处理两件事?
- 1
先把它看作可编辑的项目目录
你在工作树里打开文件、写代码、运行测试。修改会先出现在目录中,不会因为保存文件就变成 Git 提交;你可以检查差异,再决定要提交哪些内容。
- 2
多个工作树共用同一仓库
用 Git 添加工作树后,你会得到另一个项目目录。它们共用仓库的提交历史等数据,但各自有当前检出的文件、暂存区和分支位置,所以两个目录可以同时承载不同任务。
- 3
任务完成后仍要合并改动
假设你在一个目录做结账页,另一个目录修登录故障。修复提交后,结账页目录不会自动得到这次修改;你仍要通过合并等方式把提交带到目标分支。
容易混淆的地方
分支记录的是一条提交线,不会单独给你一套正在编辑的文件;工作树才是你实际操作的目录。克隆则会建立另一个仓库副本,适合需要独立仓库的情况;多个工作树共享同一仓库的数据,也不是彼此隔离的沙箱。
什么时候用
适合用
- 你正开发后台报表,线上登录却急需修复;给修复分支单开一个工作树,就能保留报表目录的现场。
- 你让两个 AI Agent 分别修改网站首页和支付流程;给它们不同工作树,便于分别检查和提交改动。
- 你想在当前功能开发期间,持续从另一个目录运行稳定分支的测试或对照页面表现。
不适合用
- 你只改一个分支,手头也没有需要保留的另一项任务;直接在现有工作树里编辑更简单。
- 你要把项目交给没有原仓库访问权限的同事,在另一台机器独立开发;用克隆仓库更合适。
- 你需要隔离依赖、进程或密钥来运行不可信代码;工作树只分开目录,改用容器等隔离环境。
练一练选一个答案,看看解释
你正在做 App 的新功能,改了一半还没提交;这时要紧急修复线上问题,又想保留当前目录的修改现场。你会怎么做?
让 AI 帮你做复制给 AI Agent 直接用
我正在当前工作树开发新功能,请先检查仓库状态,再为线上修复分支添加一个独立工作树。告诉我新目录的位置;只在新目录修改和测试,不要动当前未提交的文件。修复后说明如何把提交合并回目标分支。