GoLand合并后显示错误冲突标记或旧分支状态,需清理.vcs.xml和.workspace.xml中的过期分支引用、执行Invalidate Caches并勾选Clear VCS Log caches、删除.merged/___jb_*等临时文件。

Git merge 后 GoLand 显示错误的冲突标记或旧分支状态
GoLand 本身不存储 Git 分支合并元数据,但会缓存 .git/index 解析结果、VCS 文件状态映射、以及 Merge Tool 中临时生成的 .merge_file_* 或 ___jb_old___ 类临时文件。这些残留会导致:文件右上角仍显示“M”但 git status 已干净;Merge Tool 弹窗反复出现;或结构视图里残留已删除分支的变更痕迹。
手动清理 .idea/vcs.xml 和 .idea/workspace.xml 中的 stale branch refs
GoLand 把当前 Git root 的活跃分支、最近 merge 源/目标记录在 .idea/vcs.xml(全局)和 .idea/workspace.xml(用户态)中。合并完成后若未触发自动刷新,这些字段可能滞留旧值,导致 UI 错误渲染。
操作建议:
- 关闭 GoLand
- 用文本编辑器打开
.idea/vcs.xml,查找并删除类似的过期条目 - 打开
.idea/workspace.xml,搜索GitToolBox或GitMergeProvider相关节点(如有安装插件),清空其lastMergedBranch、targetBranch等字段值 - 保存后重启 GoLand
执行 File → Invalidate Caches and Restart… 并勾选 Clear VCS Log caches and indexes
这是最直接有效的方式,但很多人漏掉关键选项——默认勾选不包含 VCS 缓存。不勾选该项,git log 视图、分支图谱、甚至 Alt+9 VCS 工具窗口里的提交历史仍可能显示陈旧数据。
务必确认勾选:
– Invalidate caches and restart
– ✅ Clear VCS Log caches and indexes
– ✅ Clear file system cache and Local History(Local History 可能记录 merge 前的文件快照)
检查并删除项目根目录下残留的 merge 冲突临时文件
GoLand 的 Merge Tool 在异常退出时可能遗留带特殊后缀的副本,例如:main.go.merged、config.yaml.20261026-104231、___jb_bak___/xxx.go。它们不会被 git clean -f 清理,但会被 GoLand 误识别为“待提交变更”。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
推荐命令(在项目根目录运行):
find . -name "*.merged" -delete<br>find . -name "*___jb_*" -delete<br>find . -name "*.2026*" -type f -mtime -7 -delete
注意:mtime -7 是为避免误删近期正常备份,可根据实际日期调整;如使用 Windows,请改用 PowerShell 的 Get-ChildItem -Recurse -Include "*.merged", "*___jb_*" | Remove-Item。
真正麻烦的不是缓存位置多,而是 GoLand 对 Git 状态的感知是分层的:底层依赖 libgit2 解析,中间层靠自己缓存索引,上层又叠加插件逻辑。一次 merge 操作可能同时扰动三层,所以单清某一层往往没用。动手前先 git status && git reflog | head -5 确认真实状态,再决定从哪一层切进去。










