git worktree list git worktree add ../release-1.8 release/1.8 rm -rf ../release-1.8/dist && npm run build
主目录在 feature 分支,worktree 目录切到 release,两边同时跑构建。release 的 dist 里出现 feature 的接口路径,hash 也对不上。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:worktree 共用同一个 .git 对象库,工作区是分开的,但输出目录被软链或者缓存指到了同一个位置。构建工具按绝对路径缓存,第二个目录直接复用了第一份产物。
「worktree 构建产物」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
处理上按这个顺序:git worktree list 确认两个目录各自对应的分支;检查 dist、node_modules、构建缓存有没有软链到公共路径;给每个 worktree 配独立的输出目录和环境变量文件;构建前清掉共享缓存 再各跑一次;用完 git worktree remove 清理 别留着占空间。
确认没问题再收工,两个目录的 dist 里分别是对应分支的 hash 互不覆盖。
