VSCode本身不支持真正在代码行内显示Git Blame信息;所谓“行内”实为GitLens的codeLens功能,渲染在代码行上方空白处,需安装GitLens并启用gitlens.codeLens.enabled和gitlens.codeLens.recentChange,且文件须被Git跟踪、用户信息已配置。

VSCode 本身不支持“行内”显示 Git Blame(即在代码行末尾或中间插入作者信息),所谓“行内”实际是 GitLens 的 codeLens 功能,渲染在代码行上方空白处;而 VSCode 内置的 Git: Toggle Blame 显示在左侧 gutter(行号右侧),两者物理位置、触发方式和配置项完全不同,混用会导致设置无效。
怎么让每行代码上方显示作者和时间(GitLens codeLens)
这是最接近“行内”效果的方案,但本质是 codeLens,不是真正在代码行内部插入文本。
- 必须安装并启用
GitLens扩展(官方市场唯一稳定支持该能力的插件) - 打开设置(
Ctrl+,),搜索gitlens.codeLens.enabled,勾选启用(⚠️ 不是gitlens.annotations.enabled) - 同时确保
gitlens.codeLens.recentChange为true,否则只显示首次提交人,不随后续修改更新 - 默认格式为
${author} • ${date},可自定义:gitlens.codeLens.format设为"${authorShort} • ${ago}"更简洁 - 文件必须被 Git 跟踪(
git status中可见),且本地user.name和user.email已配置,否则显示Unknown author
怎么让左侧 gutter 显示作者+哈希(VSCode 内置 Git: Toggle Blame)
这是 VSCode 原生命令,不依赖插件,但位置在行号右侧的 gutter 区域,不是代码行内。
当用户提及 GitHub URL,或要求分析、审查、探索或理解任意 GitHub 项目、仓库或代码库时,请使用此技能。触发条件包括以下短语:“分析这个项目”、“看看这个仓库”、“analyze this repo”、“what does this project do”,或消息中包含任何 github.com URL。
- 快捷键:
Ctrl+Shift+P→ 输入Git: Toggle Blame→ 回车(再次执行关闭) - 右键菜单也可选
Git: Toggle Blame(注意不是Blame Annotations,那是旧版) - 必须在 Git 仓库根目录下打开工作区,子文件夹或未初始化仓库不生效
- 显示内容由
git.blame.format控制,默认为"%an %h %ar"(作者、简写哈希、相对时间) - 想显示邮箱:设
git.blame.format为"%an %h %ar"(注意英文引号包裹整个字符串)
为什么状态栏/悬停/行首都显示 Unknown author
这不是插件或设置问题,而是 Git 提交元数据缺失的直接反映。
-
git log -1 --pretty="%an %ae %ad"可验证具体提交的 author 字段是否为空或格式异常 - 常见于
git commit --amend后未保留原始 author、rebase 丢弃 author 信息、或从 SVN/Perforce 导入的老提交 - 新建文件未
git commit前,所有行都是Unknown author或Not committed yet -
git config blame.ignoreRevsFile .git-blame-ignore-revs若误加了主干提交,会导致 blame 链截断,作者错位 - VSCode 不做任何推测或补全,只忠实展示
git blame命令输出结果
容易被忽略的关键点
三个位置(gutter / codeLens / 状态栏)用的是三套独立配置,改一个不会影响另外两个;gitlens.blame.line.enabled 控制的是 GitLens 在 gutter 显示作者名(非 codeLens),它和 gitlens.codeLens.enabled 完全无关;启用任一功能后,若文件未重开,新设置可能不立即生效——尤其 gitlens.blame.line.enabled 和 gitlens.blame.heatmap.enabled 类设置,需手动关闭再打开文件才刷新。










