Git 图形客户端怎样管理多个 worktree
来源:17golang原创
时间:2026-10-18 04:33:33 192浏览 收藏
Git 图形客户端可以把同一个仓库的多个分支放进不同目录,让你同时处理功能开发、缺陷修复和代码对比,不必反复切换主工作区。本文用 VS Code 的内置 Git 界面作示范:先从仓库的 Repositories 视图创建 worktree,再分别打开和核对它们,最后从主仓库安全清理不再需要的工作目录。
官方地址:https://code.visualstudio.com/
worktree 共享同一份 Git 历史,但每个关联工作区都有自己的目录、签出分支和未提交变更。创建时关注“分支 + 目录”,删除时关注“未提交文件 + 分支是否仍需保留”,就能把并行开发和清理动作分开。
- 创建前:确认仓库和当前分支,避免在错误的仓库上操作。
- 创建时:为每个 worktree 指定独立目录,不能让两个工作区抢同一个目录。
- 使用中:在 Repositories 视图里核对分支、路径和改动归属。
- 清理前:提交、暂存或复制需要保留的内容;删除工作区不会自动删除分支。
先确认图形客户端看到的是哪个仓库
打开 VS Code 后进入源代码管理视图,再打开 Repositories 视图。这里可能同时列出多个仓库和关联 worktree。开始操作前先确认仓库名称、当前分支以及目录位置;如果窗口处于多仓库模式,后续的暂存、提交或删除动作都可能作用于当前选中的条目,而不是你以为的主目录。
主 worktree 通常是最初打开的仓库目录,关联 worktree 则是同一仓库历史下的其他工作目录。它们共享提交历史,但不共享工作文件和未提交修改。先把“主目录”和“新目录”区分开,后面的创建、打开和删除才容易验收。

用 Worktrees 菜单创建独立工作目录
在 Repositories 视图中选中目标仓库,打开更多操作菜单,选择 Worktrees > Create Worktree。随后按提示选择分支和目录。已有本地分支可以直接作为目标;如果需要从某个起点开始独立工作,先确认分支来源,再填写一个不会和主工作区重叠的目录。
- 打开源代码管理中的 Repositories 视图。
- 选中目标仓库,打开仓库行右侧的更多操作菜单。
- 选择 Worktrees > Create Worktree。
- 选择要签出的分支,并指定新的工作目录。
- 创建完成后,在列表中检查新 worktree 的分支和路径。
Git 不允许同一个本地分支同时被多个 worktree 签出。如果分支已经在主工作区或其他关联目录中使用,图形客户端通常会拒绝这次创建;此时应选择另一个分支,或先处理原 worktree,而不是强行覆盖目录。

打开和切换多个 worktree
创建后,关联 worktree 会作为单独条目显示在 Repositories 视图中。选中它可以查看当前分支和变更,再选择 Open Worktree in New Window 或在当前窗口打开。需要并行处理时,可以让主分支和功能分支分别占用不同窗口;需要比较实现时,再从列表中确认两边的路径和分支名称。
切换 worktree 的核心不是把一个目录里的文件切换成另一个分支,而是打开另一个已经签出分支的目录。因此,某个 worktree 里的未提交修改不会自动出现在另一个 worktree 中。提交、暂存、撤销和冲突处理前,都要看清源代码管理面板顶部对应的仓库条目。
如果已有目录没有自动出现在列表中,可以在设置中启用 worktree 检测,再回到 Repositories 视图检查。检测范围较大的仓库应留意扫描数量限制;对一个新创建并由客户端管理的 worktree,通常可以直接从列表打开。
删除前怎样核对,避免把改动一起删掉
清理 worktree 前先打开它的源代码管理面板,查看 Changes、Staged Changes 和未跟踪文件。需要保留的内容可以提交到该分支,或者先复制、暂存并记录去向。只看到“没有待提交改动”也不等于目录里没有重要文件,因为被忽略的本地配置和依赖目录可能不会出现在普通变更列表中。
确认后回到主仓库目录,运行命令面板中的 Git: Delete Worktree...,选择要清理的 worktree,并再次核对显示的文件夹路径。删除工作区会移除该目录;分支和已经提交的历史仍然属于共享仓库,后续仍可查看或合并。
如果客户端提示存在修改或未跟踪文件,不要直接选择强制删除。强制操作可能连同这些本地内容一起移除;只有确认它们不再需要,或已经在其他位置保存后,才适合继续。

用最小清单验收最终状态
完成一次创建、使用或清理后,可以用下面的清单做人工核对:主 worktree 仍在正确目录;新 worktree 的分支名称与任务一致;各目录的未提交改动没有串到一起;删除动作只针对目标工作目录;需要保留的提交仍能在分支历史中找到。
如果图形界面没有显示某个状态,可以把下面的命令作为只读参考。它们不替代图形客户端的操作,重点是帮助确认 worktree 列表和目录归属。
# 查看当前仓库登记的主工作区与关联工作区 git worktree list # 只移除已经确认不再需要的关联工作区 git worktree remove /path/to/feature-worktree # 清理已经被手工删除、但 Git 仍保留的工作区登记 git worktree prune
上面的路径只是示例,执行前要替换成目标 worktree 的实际路径。尤其不要把主仓库目录当作 remove 参数;如果只是想暂时离开某个分支,优先关闭对应窗口或提交改动,而不是直接删除工作区。
常见问题
为什么创建 worktree 时提示分支已被占用?
同一个本地分支不能同时签出到多个 worktree。先在 Repositories 视图查找该分支当前所在的工作区,再选择新的分支,或按实际任务结束原 worktree。
打开新 worktree 后为什么看不到主目录的修改?
关联 worktree 共享 Git 历史,但不共享工作文件和未提交改动。主目录里的未提交修改不会自动迁移;需要时应提交、暂存或使用客户端提供的迁移能力。
删除 worktree 会删除分支吗?
删除关联工作区主要移除它的工作目录,已提交的分支历史仍在仓库中。删除分支是另一个独立动作,不能把两者混为一谈。
被忽略的配置文件要怎样处理?
创建 worktree 时,Git 默认不会复制被忽略的本地配置或依赖目录。需要共享或复制这些内容时,应使用客户端提供的 worktree 文件设置,并先确认其中没有不该暴露给其他工作区的凭据。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
151 收藏
-
126 收藏
-
282 收藏
-
363 收藏
-
392 收藏
-
324 收藏
-
435 收藏
-
193 收藏
-
462 收藏
-
108 收藏
-
476 收藏
-
248 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习