还在 git checkout 里反复横跳?这个 Git 内置功能让我同时开着三个分支写代码
大部分人用 Git 切换分支,还在 git checkout 里反复横跳?
你有没有遇到过这种情况:正在一个分支上吭哧吭哧写代码,突然同事发来 PR 要你 review——你stash了,改完又 pop 回来,结果代码找不到了。或者是这种:你在 feature A 写了一大半,忽然紧急修 BUG,切换分支把 A 的改动带跑了。
今天介绍一个 Git 官方内置、但 99% 的人不知道的骚操作——Git Worktrees,中文叫”工作树”。
它能干什么?
简单说:同时 checkout 多个分支,每个分支在独立目录里,互不干扰。
传统做法:
你现在在 feature/login 分支
切到 bugfix/header? → 只能 stash 或者 commit 一半
Worktrees 做法:
主仓库: ~/proj (feature/login)
另一个: ~/proj-bugfix (bugfix/header)
再一个: ~/proj-review (同事的 PR)
一个终端里同时开着三个目录,不用 stash,不用 commit,不丢进度,想切就切。
怎么用?
先确保你的 repo 没有子模块(submodule guard 会单独检查),然后:
# 创建一个新 worktree,同时切到新分支
git worktree add ../proj-bugfix -b bugfix/header
# 进入这个目录,正常开发
cd ../proj-bugfix
git status # 独立的!不影响主仓库的分支
# 做完切回来
cd ~/proj
删除也很简单:
git worktree remove ../proj-bugfix
什么时候用?
场景一:同时开发多个需求
你在做 A,忽然要修 B,直接 git worktree add 一个新目录就行,A 的代码原封不动。
场景二:Code Review
同事发了个 PR,你不需要 clone 整个仓库,直接 git worktree add ../review-xxx -b review/xxx 拉下来看,改完删掉,干净利落。
场景三:对比分支
想对比 main 和 feature 分支的差异?两个 worktree 同时开着,用 VS Code 两个窗口并排看,一目了然。
安装
这是 Git 内置功能,Git 2.5+ 自带,不需要装任何东西。你本机的 Git 99% 已经支持了。
官方文档:https://git-scm.com/docs/git-worktree
这个 Skill 来自 superpowers 项目——一个 26 万星、专为 AI Coding Agent 设计的能力框架。worktrees 这个 Skill 是它其中一个小模块,但它解决的是所有开发者都会遇到的真问题。
Git 切换分支这件事,你可能习惯了忍。但当你用过 worktrees,就会发现那是用错了工具。
GitHub 链接:https://github.com/obra/superpowers
评论区
登录后可评论。