Git Worktree:一个仓库,多个分身

你一定遇到过这种场景------

正在 feature 分支上写功能,写到一半,线上出 bug 了。怎么办?

stash 暂存,切到 main,修 bug,提交,切回来, stash pop。如果 stash 有冲突,还得手动解。

或者更惨的:你有三个功能同时在开发,每个都在不同的分支上。来回复切,脑子都乱了。

Git Worktree 就是来解决这个问题的。


它是什么?

一句话:让同一个 Git 仓库同时拥有多个工作目录,每个目录在不同的分支上。

你不用切分支。你同时拥有好几个文件夹,每个文件夹就是一个分支。

bash 复制代码
my-project/           ← main 分支
my-project-feature/   ← feature 分支
my-project-hotfix/    ← hotfix 分支

三个文件夹,三个分支,互不干扰。在任何一个里面正常 commit、push,都作用于同一个仓库。


怎么用?

创建一个 worktree:

bash 复制代码
git worktree add ../my-project-hotfix hotfix-branch

这一条命令,就在上级目录创建了一个新文件夹 my-project-hotfix,切到 hotfix-branch 分支。你的主工作目录完全不受影响。

查看所有 worktree:

bash 复制代码
git worktree list

删除一个 worktree:

bash 复制代码
git worktree remove ../my-project-hotfix

就这三条命令,核心用法就这些。


它和 git clone 有什么区别?

很多人第一反应:这不就是多 clone 一份吗?

不是。区别很大:

clone 是复制整个仓库------独立的 .git 目录、独立的提交历史、独立的一切。两个仓库之间要通过 remote 来同步。

worktree 是共享同一个 .git 仓库。所有分支、所有提交记录、所有 stash 都是同一份。你在 worktree A 里 commit 了,worktree B 里 git log 就能看到。

这意味着:

  • • 不会浪费磁盘空间(只有工作文件是独立的)
  • • 不会出现"我修了 bug 但忘了 push,另一个仓库没更新"的问题
  • • 不会有 remote 同步的麻烦

几个真实的场景

场景一:紧急修 bug

你正在 feature 分支上写代码,写到一半。线上出 bug 了。

不用 stash,不用切分支。直接打开另一个终端,进 hotfix 的 worktree 目录,修 bug,提交,推送。然后继续回 feature 目录写你的功能。

两件事并行,互不干扰。

场景二:同时开发多个功能

三个功能三个 worktree,每个目录打开一个编辑器窗口。想写哪个写哪个,随时切换。不用 stash,不用担心切分支把未提交的代码搞丢。

场景三:代码审查

主工作目录在写自己的代码,另一个 worktree 拉同事的分支来 review。两个完全隔离,你的改动和同事的改动互不影响。

场景四:跑长时间测试

在一个 worktree 里跑测试(可能要几十分钟),同时在另一个 worktree 里继续写代码。测试跑完了再回来看结果。


注意事项

同一个分支不能同时出现在两个 worktree 里。

这很好理解------如果两个目录都在改同一个分支,那到底以谁为准?Git 会直接报错阻止你。

删除 worktree 前先确认分支状态。

如果 worktree 里有未提交的改动,删之前要处理掉。否则会成为"悬空"的 worktree,Git 会提醒你清理。

用完记得删。

worktree 是轻量的,但也不是免费的。每个 worktree 都会占一个工作目录。用完的分支及时 git worktree remove


为什么现在值得学?

因为 AI 编程助手正在让多分支并行开发成为常态。

像 Superpowers 这样的框架,在开始实现功能时会自动创建一个 worktree。AI 在隔离的分支上干活,你可以继续在主分支上做其他事。等 AI 干完了,审查通过,再合并回来。

就算你不用 AI 助手,worktree 本身就是一个被严重低估的 Git 功能。大多数人的 Git 工作流还停留在"单目录来回切分支"的模式。一旦习惯了多 worktree 并行,你就回不去了。


🔗 官方文档: git-scm.com/docs/git-wo...

💡 下期预告: 《Superpowers:给 AI 编程助手装上"超能力"》------有了 worktree 的基础,我们来看 Superpowers 是怎么用它来实现 AI 子 Agent 隔离开发的。

相关推荐
道友可好1 小时前
AI 写代码太快了,快到你对齐不了它
前端·人工智能
鱼鳞_1 小时前
苍穹外卖-Day10(Spring task)
java·后端·spring
我是一颗柠檬1 小时前
【Redis】事务与Lua脚本Day7(2026年)
数据库·redis·后端·lua·database
无风听海1 小时前
Bearer Token 权威指南:从原理到生产级安全实践
前端·javascript·安全
jerrywus1 小时前
别只换模型!Claude Opus 4.8 努力控制 + Fast模式,真实能省钱3倍
前端·agent·claude
riuphan1 小时前
JavaScript 类型判断完全指南
前端·javascript
Hilaku2 小时前
前端工程师最终会变成 AI工程师?
前端·javascript·程序员
yeflx2 小时前
Ubuntu22.04重装显卡驱动
前端·chrome
小二·2 小时前
Prompt Engineering 高级技巧:CoT/ToT/ReAct 等进阶方法论实战
前端·react.js·prompt