VSCode 1.80+ 内置 Git: View History 支持图形化提交图,需手动触发;启用 Show Merge Commits 才显示合并节点;展开 Changes in Commit 查 diff;reflog 过大会导致卡顿,可清理或禁用。

VSCode 内置的 Git 图形化历史查看功能足够日常使用,不需要额外装插件——但默认不显示图形化视图,得手动打开或配置快捷方式。
GitLens 插件不是必须的,但原生功能需要主动调用
VSCode 1.80+ 版本已内置 Git: View History 命令,支持时间线式提交图(带分支合并线、颜色区分)。它不自动弹出,需手动触发:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Git: View History并回车 - 右键点击文件资源管理器中的任意 tracked 文件 → 选择
Git: View File History - 在源代码编辑器标签页右上角点击
⋯→ 选择View File History
注意:View History 默认展示当前仓库所有分支的提交;View File History 只追踪该文件的修改记录(含重命名、移动)。
图形化视图里看不到合并提交?检查是否启用了「Show Merge Commits」
默认情况下,VSCode 的历史视图会隐藏 merge commits(只显示主线提交),导致分支合并关系断开。要显示完整拓扑结构:
- 在历史视图右上角点击齿轮图标
⚙️ - 勾选
Show Merge Commits - 可选:同时启用
Show Tags和Limit to Current Branch按需过滤
启用后,你会看到带斜线连接的菱形节点(merge commit),以及不同颜色的分支线——这是判断 feature 分支何时合入 main 的关键视觉线索。
为什么点开某次提交后看不到 diff?可能被「Changes in Commit」折叠了
在历史视图中点击某次提交,默认只显示 commit message 和 author。真正想看改了哪些文件、具体增删内容,得展开:
- 点击提交条目右侧的
▶展开面板 - 找到
Changes in Commit区域(可能被折叠成一行)→ 点击它旁边的▶或直接点击文件名 - 若仍为空,检查该提交是否为 merge commit:VSCode 对 merge commit 的 diff 默认只显示 conflict resolution 变更,不显示两个 parent 的全部差异
此时建议用命令行辅助验证:
git show --stat或
git log --oneline --graph --all
性能差、卡顿或加载不出?和 .git/logs/refs/heads/ 大小有关
VSCode 的图形化历史依赖 Git 引用日志(reflog)生成可视化数据。如果项目长期未清理 reflog(比如 CI 频繁推送、本地大量 checkout / rebase),.git/logs/refs/heads/ 下文件可能膨胀到 MB 级,导致历史视图响应迟缓甚至白屏。
临时缓解方法:
- 运行
git reflog expire --expire=30.days.ago --all
清理 30 天前的操作记录 - 禁用 reflog(仅开发机):
git config --unset core.logAllRefUpdates
,但这会影响git reflog和git reset --hard ORIG_HEAD等操作 - 大型单体仓库建议改用
git log --graph --oneline --all --simplify-by-decoration配合终端查看,更稳定
图形化视图方便快速定位,但底层仍是 git 命令驱动——任何异常都优先查 git status 和 git fsck 是否有损坏,别只盯着 UI 刷新。










