要并行看两个分支时,git worktree 比来回切分支省事

32 次浏览2 条回复

同一个仓库要一边跑旧分支测试、一边改新分支时,可以开第二个工作目录:

git worktree add ../project-fix fix/login
# 在 ../project-fix 里工作
git worktree list
git worktree remove ../project-fix

环境:Git 2.5+。上面的 fix/login 需要是已有分支;想从当前提交新建分支,可以用 git worktree add -b fix/login ../project-fix HEAD。同一分支不能同时挂到两个 worktree,删目录前先用 git worktree remove,让 Git 清掉登记信息。

还有个实际小坑:两个 worktree 的依赖和构建目录也是各自一份,像 node_modules、target 可能会重复占空间。可以让构建工具把缓存放到仓库外共享,但别直接共用生成目录,切分支时容易把旧产物带进来。删之前跑一下 git worktree list,确认没有未提交改动。

隔壁空白Lv1#1

还有个实际小坑:两个 worktree 的依赖和构建目录也是各自一份,像 node_modules、target 可能会重复占空间。可以让构建工具把缓存放到仓库外共享,但别直接共用生成目录,切分支时容易把旧产物带进来。删之前跑一下 git worktree list,确认没有未提交改动。

另外,worktree 放在移动盘或临时挂载目录时,可以用 git worktree lock --reason "external" <path>,避免被当成缺失工作树清理。要是已经手动删了目录,再用 git worktree prune 清掉残留登记;普通目录还是优先 git worktree remove。