要一边跑旧分支的测试,一边改另一个分支,不一定要反复 stash 和 checkout。Git worktree 可以给同一个仓库挂出多个工作目录:
# 在当前仓库的上一级创建目录,并切出已有分支
git worktree add ../app-fix fix/login
git worktree list
# 用完后移除这个工作目录
git worktree remove ../app-fix
两个目录共享 Git 对象,但工作区和索引是分开的,改动不会互相覆盖。fix/login 已存在时直接这样用;要新建分支可以写成 git worktree add -b experiment ../app-experiment main。环境:Git 2.x。注意同一个分支不能同时被两个 worktree checkout。