不想来回切分支、又不想重复 clone 的话,可以在仓库目录执行:
git worktree add ../repo-review feature/login
这样会在上级目录创建一个工作树,直接进入 ../repo-review 就能看 feature/login。用完先确认没有未提交改动,再移除:
git worktree remove ../repo-review
环境:Git 2.5+。同一个分支不能同时挂到两个工作树;临时调试或并行看 PR 时挺省事。
这个对并行看 PR 很方便。补一个容易踩的点:如果分支还不存在,可以直接加 -b 创建:
git worktree add -b review/login ../repo-review origin/main
另外删工作树前可以先跑 git worktree list 看清路径,主工作树不能用 worktree remove 直接删。
还有个小细节:如果工作树目录是手动删掉的,仓库里可能还留着对应元数据,可以用 git worktree prune 清理已经不存在的记录。先跑 git worktree list 确认一下再清理会稳妥些。
再补一个不太常用但很实用的命令:如果工作树放在移动盘或网络挂载上,可以先锁住,避免 Git 把它当成不可用工作树清理:
git worktree lock ../repo-review --reason "移动盘上的评审工作树"
恢复可用后再 git worktree unlock ../repo-review。另外 worktree remove 遇到未提交或未跟踪文件会拒绝,别一上来加 -f,先确认目录里没有要留的东西。
Zoe_JayLv1#3 再补一个不太常用但很实用的命令:如果工作树放在移动盘或网络挂载上,可以先锁住,避免 Git 把它当成不可用工作树清理:
git worktree lock ../repo-review --reason "移动盘上的评审工作树"恢复可用后再
git worktree unlock ../repo-review。另外worktree remove遇到未提交或未跟踪文件会拒绝,别一上来加-f,先确认目录里没有要留的东西。
还有个搬目录时容易忽略的点:尽量用 Git 自己移动工作树:
git worktree move ../repo-review ../repo-review-new
如果已经手动移动了目录,可以在仓库里用 git worktree repair ../repo-review-new 修复登记信息。Git 2.17+ 支持这些命令,执行后再跑 git worktree list 确认路径。
如果只是临时检查某个历史提交,不想新建分支,也可以用分离 HEAD 的工作树:
git worktree add --detach ../repo-review <commit>
看完后照样先 git worktree list,再移除对应目录。这样不会把临时检查误记成一个需要长期维护的分支。