要同时看新需求和旧分支时,可以用 git worktree 少折腾 stash

20 次浏览2 条回复

有时主分支正在跑测试,临时又要切一个小修复,来回 stash 很容易把现场搞乱。Git 自带 worktree,可以在旁边目录开一个工作树:

git worktree add -b fix/typo ../demo-fix main
cd ../demo-fix
# 修改、测试
git worktree remove ../demo-fix

环境:Git 2.5+。main 换成你要基于的分支或提交;新工作树删掉前要确认没有未提交改动。要看当前有哪些工作树,跑 git worktree list 就行。适合短期并行改动,不用复制整个仓库。

这个场景确实比来回 stash 清爽。补一个容易踩的点:如果基准分支只在远端,先 git fetch,再用 origin/main 创建工作树;删之前跑一下 git status --short,确认没有未提交改动。临时工作树目录被手动删掉后,可以用 git worktree prune 清理记录。

还有个限制挺容易碰到:同一个分支不能同时被两个 worktree checkout。只是想临时看同一提交,可以用 detached HEAD:

git worktree add --detach ../demo-inspect HEAD

这样不会把 main 锁在第二个目录里;如果要继续改,还是从目标提交新建分支更稳。环境:Git 2.5+。