登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

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 则是同一仓库历史下的其他工作目录。它们共享提交历史,但不共享工作文件和未提交修改。先把“主目录”和“新目录”区分开,后面的创建、打开和删除才容易验收。

源代码管理 Repositories 视图中打开 Worktrees 创建入口的原创界面说明图
图1:原创界面说明图,展示从 Repositories 视图进入 Worktrees 创建入口;它不是实际软件截图,也不是运行证据。

用 Worktrees 菜单创建独立工作目录

在 Repositories 视图中选中目标仓库,打开更多操作菜单,选择 Worktrees > Create Worktree。随后按提示选择分支和目录。已有本地分支可以直接作为目标;如果需要从某个起点开始独立工作,先确认分支来源,再填写一个不会和主工作区重叠的目录。

  1. 打开源代码管理中的 Repositories 视图。
  2. 选中目标仓库,打开仓库行右侧的更多操作菜单。
  3. 选择 Worktrees > Create Worktree。
  4. 选择要签出的分支,并指定新的工作目录。
  5. 创建完成后,在列表中检查新 worktree 的分支和路径。

Git 不允许同一个本地分支同时被多个 worktree 签出。如果分支已经在主工作区或其他关联目录中使用,图形客户端通常会拒绝这次创建;此时应选择另一个分支,或先处理原 worktree,而不是强行覆盖目录。

Repositories 视图列出主工作区与多个关联 worktree 的原创界面说明图
图2:原创界面说明图,展示多个 worktree 与各自分支并列出现的状态;它用于解释界面关系,不代表实际运行截图。

打开和切换多个 worktree

创建后,关联 worktree 会作为单独条目显示在 Repositories 视图中。选中它可以查看当前分支和变更,再选择 Open Worktree in New Window 或在当前窗口打开。需要并行处理时,可以让主分支和功能分支分别占用不同窗口;需要比较实现时,再从列表中确认两边的路径和分支名称。

切换 worktree 的核心不是把一个目录里的文件切换成另一个分支,而是打开另一个已经签出分支的目录。因此,某个 worktree 里的未提交修改不会自动出现在另一个 worktree 中。提交、暂存、撤销和冲突处理前,都要看清源代码管理面板顶部对应的仓库条目。

如果已有目录没有自动出现在列表中,可以在设置中启用 worktree 检测,再回到 Repositories 视图检查。检测范围较大的仓库应留意扫描数量限制;对一个新创建并由客户端管理的 worktree,通常可以直接从列表打开。

删除前怎样核对,避免把改动一起删掉

清理 worktree 前先打开它的源代码管理面板,查看 Changes、Staged Changes 和未跟踪文件。需要保留的内容可以提交到该分支,或者先复制、暂存并记录去向。只看到“没有待提交改动”也不等于目录里没有重要文件,因为被忽略的本地配置和依赖目录可能不会出现在普通变更列表中。

确认后回到主仓库目录,运行命令面板中的 Git: Delete Worktree...,选择要清理的 worktree,并再次核对显示的文件夹路径。删除工作区会移除该目录;分支和已经提交的历史仍然属于共享仓库,后续仍可查看或合并。

如果客户端提示存在修改或未跟踪文件,不要直接选择强制删除。强制操作可能连同这些本地内容一起移除;只有确认它们不再需要,或已经在其他位置保存后,才适合继续。

删除关联 worktree 前检查未提交文件且保留分支历史的原创界面说明图
图3:原创界面说明图,展示删除工作区前的风险提示与删除后的分支保留关系;它不是实际软件截图。

用最小清单验收最终状态

完成一次创建、使用或清理后,可以用下面的清单做人工核对:主 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 文件设置,并先确认其中没有不该暴露给其他工作区的凭据。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>