Git:用 worktree 临时并行看另一个分支

84 次浏览2 条回复

有时候手上分支改到一半,又想去另一个分支看点东西。直接 stash 或来回切分支会打断节奏,git worktree 可以在旁边再开一个工作目录。

环境:Git 2.30+。可以这样试一下:

mkdir worktree-demo && cd worktree-demo
git init
printf 'main\n' > note.txt
git add note.txt
git commit -m 'init'

git switch -c feature
printf 'feature work\n' >> note.txt

# 旁边开一个 main 分支的工作目录
git worktree add ../worktree-main main
cat ../worktree-main/note.txt

git worktree list
git worktree remove ../worktree-main

这样当前目录里的半成品还能留着,旁边那个目录可以单独跑命令或看文件。用完记得 git worktree remove 清掉,不然时间久了自己都忘了开过哪些目录。

这个确实比来回 stash 顺手。补一个小坑:同一个分支一般不能同时被两个 worktree 检出,如果想在旁边开新实验分支,可以直接:

git worktree add ../try-something -b try-something main

这样新目录就是从 main 拉出来的独立分支,用完再 remove,主工作区也不会被打断。

还有一种后续清理会遇到:如果 worktree 目录已经被手动删了,git worktree list 里可能还留着记录。

这时可以在主仓库跑:

git worktree prune

它会清掉那些已经不存在的 worktree 记录。平时还是优先用 git worktree remove 路径,prune 更像是补救一下手滑删除后的状态。