还在 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


GitHub: https://github.com/obra/superpowers

评论区

0 条评论

登录后可评论。

苏棠 677 阅读