使用 Git 工作树
标准的 Git 仓库通常只使用一个工作树。 在这种设置下,要切换分支,必须 提交或 储藏未完成的工作。 Git 工作树允许在不同目录下同时检出多个分支,并都连接到同一个 .git 目录。
什么是 Git 工作树?
Git 工作树允许在同一个仓库中,同时在不同目录检出多个分支。 使用 Git 工作树的常见用例如下:
AI 驱动开发:在不同的工作树中运行 AI 代理,以防覆盖本地未保存的更改。
紧急漏洞修复:在单独目录处理关键问题,不影响当前进度。
并行代码审查:可在本地检出和测试拉取请求或合并请求,而不会影响已有环境、数据库状态或构建产物。
长时间运行的任务:可在一个工作树运行大型测试套件或复杂构建,同时在另一个工作树中继续编写代码。
多分支上下文切换:管理多个长时间运行的分支,无需储藏更改或等待分支切换后大量文件重新索引。
Git 工作树是项目的链接副本。 与 git clone 不同,后者会创建仓库的完整副本,所有工作树共享同一个核心 .git 历史记录。
创建工作树时,Git 会为你的文件生成一个新目录。 该目录并不是完整的 .git 文件夹,而是包含一个 .git 文件,该文件以纯文本保存一个路径,指向原始仓库。 这能确保所有工作树保持同步,并拥有独立的工作环境。

有关 Git 工作树的更多信息,请参阅 官方 Git 文档。
创建和管理 Git 工作树
如果一个项目已经拥有多个 Git 工作树,则 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡会默认显示。 否则,可以在 Git 工具窗口 Alt+9 中,通过点击 并选择 工作树(经过截断的无意义字符串,应为“工作树”) 来打开。

创建 Git 工作树
在 Git 工具窗口 Alt+9 中,打开 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡,并点击
新建工作树。
或者,在主菜单中选择 。
这将打开 新建工作树 对话框。

在 新建工作树 对话框中,指定以下内容:
从分支 :选择源分支。
注意,不能在两个工作树中同时检出同一个分支。 如果想以当前检出的分支作为新工作树的来源,可以基于该分支创建另一个本地分支,并在新工作树中使用。 为此请选择 新建分支 选项。
项目名称 :新建工作树的名称。
位置 :工作树存储目录。
避免嵌套工作树:不建议在当前项目的目录下创建工作树(如:
Projects/mainProject/linkedWorktree)。 当前,GoLand 会将此类项目误识别为多根项目,导致工作树集成出现问题。
创建新工作树后,GoLand 会将其作为单独项目打开。
在不同工作树间切换
工作树第一次打开后,其行为与其他项目一致。 可以在主菜单的 最近的项目 中或窗口页眉中工具栏的项目微件中找到它。
要切换到工作树,包括在 GoLand 外部创建的工作树,请执行以下操作:
在 Git 工具窗口 Alt+9 中,打开 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡。
或者,在主菜单中选择 。
按两次点击目标工作树。

工作树会根据你的系统设置在新窗口或当前窗口打开。
默认情况下, 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡不会显示活动工作树的任何状态。 只有工作树输入特定状态时,状态指示器才会出现在列表中:
删除工作树
删除工作树前,请确保已提交所有更改。
在 Git 工具窗口 Alt+9 中,打开 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡。
或者,在主菜单中选择 。
选择工作树并点击
Delete。
修剪工作树
如果你手动删除了工作树目录,而不是在 IDE 中 删除工作树 ,Git 会检测到文件缺失,并将该工作树标记为 可修剪。 修剪会移除丢失工作树的 Git 内部记录,并释放其对应的分支。
在 Git 工具窗口 Alt+9 中,打开 工作树(经过截断的无意义字符串,应为“工作树”) 选项卡。
或者,在主菜单中选择 。
点击
修剪。
故障排查
- GoLand 将不同工作树视为同一项目
如果 文件被提交到你的仓库,则可能会出现此情况。 由于该文件包含唯一的
ProjectId,新建 Git 工作树时会重复该 ID。 因此,IDE 会因 ID 相同而混淆,将两个目录错误识别为同一项目。如何修复:
在 GoLand 中关闭你的项目。
进入 Git 工作树目录,删除
workspace.xml文件(或仅删除该文件中的ProjectId行)。在 IDE 中重新打开项目,以便生成新的唯一 ID。
为防止再次出现该问题,请确保将 添加到仓库的
.gitignore文件中。