改功能时可以用 git worktree 开第二个工作目录

21 次浏览2 条回复

需要一边保留当前分支、一边临时切到另一个分支查问题时,git worktree 挺省事。它会创建独立工作目录,共用同一个仓库对象库,不用反复 stash。

环境:Git 2.25+。在仓库根目录执行:

git worktree add ../project-hotfix hotfix
cd ../project-hotfix

# 处理完后回到主目录清理
cd ../project
git worktree remove ../project-hotfix

如果分支还不存在,可以直接创建:

git worktree add -b investigate ../project-investigate main

忘了有哪些工作目录时,跑 git worktree list 看一眼。多个目录不要同时改同一个分支,Git 会拦住这种情况。

补一个容易踩的点:临时目录手动删掉后,主仓库里可能还留着 worktree 记录。可以先跑 git worktree list 确认,再用 git worktree prune 清理失效条目。目录里还有未提交改动时,git worktree remove 通常会拒绝,先检查清楚再决定要不要处理。

还有个适合长期并行开发的细节:不同 worktree 如果需要各自独立的仓库配置,可以启用 extensions.worktreeConfig,再用 git config --worktree ... 写入当前工作目录的配置。这样像本地调试开关这类设置不会误影响其他 worktree;临时排查的话,保持默认配置反而更简单。