GitLens 的功能依赖 Git 仓库状态和配置:未提交文件无右键菜单;需仓库已识别、文件已跟踪;内联 blame 需启用 gitlens.blame.line.enabled;对比版本要求文件有历史 commit;重写操作(如 rebase)会使部分提交在历史视图中不可见。

GitLens 能直接在编辑器里点开某行代码的完整修改历史,但前提是仓库已初始化、文件已提交过——没提交过的脏文件或未跟踪文件,右键根本不会出现 GitLens 相关菜单。
右键菜单里没有「GitLens: Show History」?先检查这三件事
常见现象是点了右键,却找不到 GitLens 提供的任何历史操作项。这不是插件没装好,而是当前上下文不满足触发条件:
-
git status必须显示该文件在暂存区或已提交(即不是untracked状态) - VSCode 当前打开的文件必须属于某个已识别的 Git 仓库(底部状态栏应显示分支名,如
main) - GitLens 插件设置中未禁用
gitlens.codeLens.enabled(默认开启,但有人会关掉以提升性能)
快速查看某行代码是谁、什么时候改的:用内联 blame
这是 GitLens 最高频的用法。把光标停在任意一行,左侧 gutter(行号右边那条窄缝)会立刻显示最近一次修改该行的提交简写、作者和时间。鼠标悬停能看到完整提交信息;点击可跳转到对应 commit 页面。
如果没显示,试试手动触发:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(Mac),输入 GitLens: Toggle Blame Annotations 并执行。注意:该功能依赖 gitlens.blame.line.enabled 配置项为 true。
对比两个版本的某段代码:用「Compare with Previous Revision」
想看当前修改和上一个 commit 之间某几行的区别?选中代码块,右键 → GitLens: Compare with Previous Revision。它会自动打开 diff 视图,只高亮你选中的范围,而不是整个文件。
这个命令实际调用的是 Git 的 git show HEAD~1:path/to/file,所以要求:
- 当前文件至少有一个历史 commit(不能是首次提交后的空变更)
- 选中的代码在上一版中确实存在(否则对比结果为空)
- 若想对比更早的版本,可用
GitLens: Open File Timeline先定位目标 commit
为什么「Show History」里看不到某次提交?可能被 Git 的重写操作抹掉了
如果你用过 git rebase -i、git commit --amend 或 git filter-repo,某些提交哈希会失效。GitLens 的历史视图基于 git log 输出,而这些操作会让旧 commit 从当前分支的可达路径中消失。此时即使你知道那个哈希值,git show 可能报错 fatal: bad object。
解决办法只有两个:git reflog 找回临时引用,或从备份分支(如 origin/main)重新拉取原始历史。GitLens 本身不缓存 commit 数据,它只是 Git 命令的可视化外壳。










