要一边修 bug、一边保留当前分支继续跑测试时,没必要反复 stash 和 checkout。仓库根目录可以直接开一个工作树:
git worktree add ../app-fix -b fix/cache
cd ../app-fix
# 在这个目录改代码、提交
git status
# 回到原仓库查看所有工作树
git worktree list
# 分支合并后再移除临时目录
git worktree remove ../app-fix
环境:Git 2.20+。../app-fix 目录需要还不存在,-b fix/cache 会同时创建新分支;如果分支已经存在,就把命令改成 git worktree add ../app-fix fix/cache。工作树之间共享对象库,但每个目录有自己的检出状态,比较适合并行处理互不冲突的任务。