什么是Git Worktree?
在一个仓库里,同时打开多个“分身”,每个分身对应不同分支。
它有什么用呢?
同时在多分支上工作,很适合当前 vibe coding 的形式。
古法编码时则可以避免频繁的checkout和可能需要的stash

基础使用
使用一个demo演示。
1.初始化仓库
git init
# -b main
echo "hello" > app.txt
git add app.txt
git commit -m "init on main"现在仓库中就有一个主worktree了。
git worktree list2.基于main分支创建两个worktree
git worktree add ../wt-a -b feature-a main
git worktree add ../wt-b -b feature-b main也可以选择在项目目录中创建隐藏文件夹 .worktree,然后创建.worktree/wt-a,在使用superpowers时会出现这样的推荐。
此时再执行:
git worktree list就可以看到三条结果。
3.各自独立开发
cd ../wt-a
echo "feature a" >> app.txt
git add app.txt
git commit -m "feat: update in feature-a"cd ../wt-b
echo "feature b" >> app.txt
git add app.txt
git commit -m "feat: update in feature-b"合并操作与普通git操作无异,merge/rebase
提一嘴merge和rebase的区别:
merge 是在目标分支(如 main)上,把另一个分支合并进来。
rebase 是在当前分支(如 feature)上,把它的提交重放到目标分支之后。人话就是假装是从main的最新提交开始开发。
失败示例
同一个分支不能被多个 worktree 同时使用
git worktree add ../wt-main-copy main会出现:
Preparing worktree (checking out 'main')
fatal: 'main' is already checked out at '/path/wt-demo'