用 git worktree 同时处理两条分支

2026 / 10 / 21#git#worktree#效率

场景

正在 feature/a 上改到一半,代码不能提交。此时线上出问题要立刻在 master 上修。传统做法是 git stash + checkout,回来再 stash pop —— 但 stash 容易混,尤其是有未跟踪文件和依赖安装的时候。

worktree 的做法

git worktree add ../proj-hotfix master
cd ../proj-hotfix

这样得到一个独立目录,检出的是 master,和原目录共享同一个 .git 对象库(不是 clone,不占双份历史)。

修完提交、推送,然后删掉:

git worktree remove ../proj-hotfix

和 clone 的区别

worktree clone
对象库 共享 独立两份
磁盘占用 只多一份工作区文件 多一份完整仓库
分支 不能检出同一分支两次 各自独立
适合 同一仓库多分支并行 完全独立的副本

"同一分支不能检出两次" 是硬限制。想在两个目录同时看同一个分支,worktree 做不到,那才需要 clone。

实际好用的两个场景

  1. 一边跑长任务一边改代码:在 worktree 里跑测试/构建,原目录继续写,互不干扰。
  2. 给别人 review:开一个 worktree 到目标分支,用编辑器完整打开,不用担心把当前工作搞乱。

清理

删目录不等于删记录。如果直接 rm -rf 掉了 worktree 目录,git worktree list 里会留下失效条目,用:

git worktree prune

清掉这些死引用。

本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表