Git Graph 是唯一能严格还原真实分支拓扑的 VSCode 插件,其输出与 git log --graph --all --simplify-by-decoration 完全一致;常见问题包括路径配置错误、未启用 Show All Branches、忽略 parent 顺序及未正确使用 --all 和 --simplify-by-decoration 参数。

Git Graph 是目前唯一能稳定还原真实分支拓扑的 VSCode 插件,其他方案要么漏分支、要么卡死、要么压根不显示 merge 关系。它不是“看起来像分支图”,而是和 git log --graph --all --simplify-by-decoration 输出严格一致。
Git Graph 打不开或图是空的,90% 是路径或 git.path 配错了
插件根本没反应?先验证 VSCode 是否识别到 Git 仓库:命令面板(Ctrl+Shift+P)→ 输入 Git: Show Git Output,如果看到 fatal: not a git repository,说明当前打开的不是仓库根目录。
- 右键资源管理器里的文件夹 → Reopen Folder as Root(最快解决)
- 进 VSCode 设置搜
git.path,必须指向真实可执行文件,比如:/usr/bin/git(macOS/Linux)或C:\Program Files\Git\bin\git.exe(Windows) - 多根工作区下,Git Graph 只作用于第一个被识别为 Git 仓库的文件夹,不支持跨根聚合
分支图只显示一条直线?必须手动开 Show All Branches
刚把 feature/login 合入 main,图里却只剩一条线——这不是合并失败,是插件默认只画当前分支及其直系祖先。所有已合入的 feature 分支指针都被隐藏了。
- 打开 Git Graph 视图(
Ctrl+Shift+G) - 点右上角齿轮图标 → 勾选
Show All Branches - 点
Refresh按钮强制重载 - 此时所有本地分支会以带颜色圆点形式出现,箭头连接关系完整还原
merge commit 显示为菱形,但 parent 顺序决定谁是“被合并方”
图中菱形节点 ≠ 合并成功,它只是 Git 提交记录的可视化表达。关键看 parent 字段:
- 左边箭头连的是第一个 parent(通常是当前分支,如
main) - 右边箭头连的是第二个 parent(被合并进来的分支,如
feature/x) -
git merge --no-ff feature/x生成的菱形,右侧一定连着feature/x的最新提交 -
git merge -s ours或 fast-forward 合并不会产生菱形——图里只有一条直线,这是 Git 本身没存第二 parent,不是插件 bug - 不确定时,右键该节点 →
View Commit Details,直接看parent字段的 hash 列表
大仓库加载慢、图太乱?关 Auto Refresh + 加参数限深
超过 10k 提交的仓库,开启 Auto Refresh 会让 VSCode 主进程卡住 3–5 秒。更糟的是,默认全量拉取会让分支线交叉成毛线团。
- 设置里关闭
Auto Refresh,改用手动Refresh - 在图形界面顶部输入框粘贴参数:
--all --simplify-by-decoration --date-order -n 200 - 这会只拉最近 200 条有 branch/tag 标记的提交,跳过大量中间 merge,图立刻干净,且不丢分支拓扑
- 漏掉
--all或--simplify-by-decoration,图看着对,其实缺了关键分支指针
真正容易被忽略的点是:Git Graph 的图不是“渲染出来就行”,它必须和底层 Git 命令输出一致;而多数人调了半天配色和布局,却忘了确认这两个参数是否生效。


















