在日常开发中,你是否经常遇到这样的场景:正在 feature 分支上写代码写到一半,突然接到一个紧急的线上 Bug 需要修复。这时候你不得不 git stash 暂存当前修改,切到 main 分支修 Bug,修完再切回来,git stash pop 恢复现场…… 如此反复,不仅打断思路,还时常因为忘记 stash 而手忙脚乱。
git worktree 就是来解决这个问题的。
什么是 Git Worktree?
简单来说,git worktree 让你能在同一个 Git 仓库里,同时将不同的分支检出到不同的文件夹中。每个文件夹都是一个独立的工作区,互不干扰。
你可以把它理解成 Git 的“分身术”——一个仓库,多个工作目录,各干各的。
核心命令速览
1. 创建 Worktree
# 为已有分支创建 git worktree add ../project-hotfix hotfix # 创建新分支并同时创建 worktree(最常用) git worktree add -b feature/new-login ../project-login main # 创建临时 worktree(detached HEAD) git worktree add -d ../project-temp
💡 小技巧:路径中的 ../ 表示把新 worktree 放在主仓库旁边,便于管理。
2. 查看和管理
# 查看所有 worktree git worktree list # 删除 worktree(推荐) git worktree remove <路径> # 清理残留记录 git worktree prune
4 个让你爱上它的使用场景
场景一:紧急 Bug 修复(最经典)
你正在开发新功能,突然线上出 Bug 了。不用 stash,不用中断思路:
git worktree add -b hotfix/urgent ../myapp-hotfix main cd ../myapp-hotfix # 修复 Bug → 提交 → 合并 # 然后删掉这个临时 worktree git worktree remove ../myapp-hotfix
场景二:并行开发多个功能
为一个新需求创建一个独立的 worktree,随时切换上下文而无需重新加载项目:
git worktree add -b feature/payment ../myapp-payment main git worktree add -b feature/notification ../myapp-notification main
场景三:Code Review 不打断当前工作
审查他人 PR 时,单独拉一个 worktree 出来测试,不影响你当前正在做的事情。
场景四:让 AI 或实验脚本在“沙盒”中运行
如果你用 AI 辅助编程,或者需要运行一些不稳定的脚本,给它们一个独立的 worktree,随便折腾,主项目永远干净。
日常使用工作流示例
假设你的主仓库在 ~/projects/my-app:
cd ~/projects/my-app # 查看所有 worktree git worktree list # 创建新功能 worktree git worktree add -b feature/login ../my-app-login main # 在新目录中工作 cd ../my-app-login # ... 开发、提交 ... # 回到主仓库继续其他事 cd ~/projects/my-app
最终你的项目结构是这样的:
~/projects/ ├── my-app/ # 主仓库(main 分支) ├── my-app-login/ # worktree(feature/login 分支) └── my-app-hotfix/ # worktree(hotfix/urgent 分支)
每个目录可以单独打开一个编辑器窗口,像操作独立项目一样。
需要注意的 3 点
分支互斥:同一个分支不能同时被两个 worktree 检出,Git 会阻止你这么做。
共享存储:所有 worktree 共享同一个 .git 目录和历史记录,不会占用双倍磁盘空间。
删除方式:尽量用 git worktree remove 删除,而不是手动删文件夹,否则需要用 git worktree prune 清理残留。
总结
git worktree 的核心价值就两个字:隔离 和 并行。
它让你能够:
✅ 同时处理多个分支任务,无需频繁切换
✅ 避免 stash 的烦恼,上下文切换更流畅
✅ 为每个任务保持干净、独立的工作环境
✅ 节省磁盘空间(共享 .git 目录)
如果你的日常开发还在 git checkout + git stash 之间反复横跳,不妨试试 git worktree,相信我,一旦用上就回不去了。
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。
GitHub登录