跳到正文

工作树

Worktree

中级通用

工作树(Worktree)是 Git 中供你查看和修改项目文件的目录;Git 也能为同一个仓库建立多个工作树,让不同分支各有一套文件。这样你不用反复切换分支,就能一边修线上问题,一边继续开发新功能。

你可能会说:「我想同时改新功能和修线上问题,能不能各用一个目录,别来回切分支?」

读之前建议先了解

动手看看

main当前所在 HEADfeature/couponhotfix/pay初始化商城支付表单main · HEAD
1

商城已有支付页面,当前在项目目录 shop 的 main 分支。这个目录就是一棵工作树,里面的文件可以查看和修改。

要点

  1. 1

    先把它看作可编辑的项目目录

    你在工作树里打开文件、写代码、运行测试。修改会先出现在目录中,不会因为保存文件就变成 Git 提交;你可以检查差异,再决定要提交哪些内容。

  2. 2

    多个工作树共用同一仓库

    用 Git 添加工作树后,你会得到另一个项目目录。它们共用仓库的提交历史等数据,但各自有当前检出的文件、暂存区和分支位置,所以两个目录可以同时承载不同任务。

  3. 3

    任务完成后仍要合并改动

    假设你在一个目录做结账页,另一个目录修登录故障。修复提交后,结账页目录不会自动得到这次修改;你仍要通过合并等方式把提交带到目标分支。

容易混淆的地方

分支记录的是一条提交线,不会单独给你一套正在编辑的文件;工作树才是你实际操作的目录。克隆则会建立另一个仓库副本,适合需要独立仓库的情况;多个工作树共享同一仓库的数据,也不是彼此隔离的沙箱。

什么时候用

适合用

  • 你正开发后台报表,线上登录却急需修复;给修复分支单开一个工作树,就能保留报表目录的现场。
  • 你让两个 AI Agent 分别修改网站首页和支付流程;给它们不同工作树,便于分别检查和提交改动。
  • 你想在当前功能开发期间,持续从另一个目录运行稳定分支的测试或对照页面表现。

不适合用

  • 你只改一个分支,手头也没有需要保留的另一项任务;直接在现有工作树里编辑更简单。
  • 你要把项目交给没有原仓库访问权限的同事,在另一台机器独立开发;用克隆仓库更合适。
  • 你需要隔离依赖、进程或密钥来运行不可信代码;工作树只分开目录,改用容器等隔离环境。

练一练

你正在做 App 的新功能,改了一半还没提交;这时要紧急修复线上问题,又想保留当前目录的修改现场。你会怎么做?

让 AI 帮你做

我正在当前工作树开发新功能,请先检查仓库状态,再为线上修复分支添加一个独立工作树。告诉我新目录的位置;只在新目录修改和测试,不要动当前未提交的文件。修复后说明如何把提交合并回目标分支。

接下来学什么