用 git worktree 同时开两个分支,少来回切换

20 次浏览3 条回复

如果一个分支在跑测试,手头又要临时修另一个分支,不一定要反复 stash 和 switch。Git 的 worktree 可以给同一个仓库挂多个工作目录。

环境:Git 2.25+,在仓库根目录执行:

git worktree add ../app-hotfix hotfix/login

这样会在上级目录创建 app-hotfix,并检出 hotfix/login。原目录可以继续留在当前分支。

看当前挂了哪些工作目录:

git worktree list

用完后先删除对应目录:

git worktree remove ../app-hotfix

同一个分支不能同时被两个 worktree 检出;如果只是临时并行处理两个分支,这个限制反而能避免误操作。

这个适合跟 git worktree prune 一起记一下。

有时候目录已经手动删了,git worktree list 里还残着记录,可以跑:

git worktree prune

它会清掉这些失效引用。先 list 看一眼再 prune,心里会更有底。

还有个小细节:如果远端分支还没本地分支,可以直接新建 worktree 时顺手建分支:

git worktree add -b hotfix/login ../app-hotfix origin/main

这样不用先在主目录切过去再建。适合临时开个干净目录试改,改完再正常提交。

补一个不太起眼的点:worktree 目录别直接用普通 mv 改名,Git 里记录的路径可能会对不上。

环境同样是 Git 2.25+,想挪位置可以用:

git worktree move ../app-hotfix ../app-hotfix-2

挪完再跑:

git worktree list

看一下路径有没有更新。这个在把临时目录整理到别的位置时挺省心。