有时候一个仓库里主线还在跑着,旁边又想临时切到另一个分支看点东西。来回 checkout 容易把工作区搅乱,Git 自带的 worktree 可以把同一个仓库检出到另一个目录。
环境:Git 2.30+。可以在一个测试目录里跑:
mkdir worktree-demo && cd worktree-demo
git init
printf 'hello\n' > note.txt
git add note.txt
git commit -m 'init'
git switch -c feature-a
printf 'feature a\n' > a.txt
git add a.txt
git commit -m 'add a'
git switch main
git worktree add ../worktree-feature-a feature-a
然后看一下:
ls ../worktree-feature-a
git worktree list
这样 worktree-demo 还在 main,旁边的 ../worktree-feature-a 是 feature-a。两个目录各干各的,比频繁切分支安静一点。
用完可以删掉:
git worktree remove ../worktree-feature-a
这个适合临时并行看代码、跑对比,别把它当成复制仓库的替代品就行。