Git Lens 是 VSCode 中最直接的差异查看方案,将 git diff 嵌入侧边栏和行内:绿色背景为新增行(+),红色为删除行(-),黄色为修改行(先删后增)。

Git Lens 插件是 VSCode 里最直接的差异查看方案
不装插件也能看,但默认 Git 视图只显示文件列表,点进去是全量内容,没法高亮行级变更。Git Lens 把 git diff 的能力直接嵌进编辑器侧边栏和行内,省去切终端、记路径、拼命令的步骤。
安装后右键任意已跟踪文件 → 选 Git: Compare with HEAD,或点击编辑器右上角的「源代码管理」图标 → 在更改列表里点击文件名旁的 ⋯ → 选 Compare with HEAD,就能在新标签页中看到带颜色标记的增删改。
- 绿色背景 = 新增行(
+) - 红色背景 = 删除行(
-) - 黄色背景 = 修改行(实际是先删后增,Git Lens 合并显示为“修改”)
- 行号左侧的
>或图标可快速跳转到下一处差异
不用插件时用内置 Source Control 视图看差异
VSCode 原生支持基础 diff,但交互略隐晦:必须确保文件已在 Git 索引中(即执行过 git add),否则“暂存的更改”区域为空,点文件不会弹出对比视图。
操作路径:左侧活动栏点 源代码管理 图标 → 展开 暂存的更改 或 未暂存的更改 → 点击具体文件 → 右侧自动打开 diff 编辑器。
CNB 云原生构建平台的 Git 操作技能,支持代码克隆、提交、推送、分支管理、Merge Request 管理、流水线触发与结果读取。初次使用需收集用户的 Git 用户名和邮箱。
- 如果点文件没反应,大概率是该文件还没被
git add过,或者根本不在 Git 仓库根目录下(检查当前工作区是否为.git所在目录) - diff 视图顶部有三个按钮:
Discard Changes、Stage Changes、Open File,别误点Discard Changes清空本地修改 - 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)输入Git: Open Changes可快速唤出当前文件与 HEAD 的对比
命令行 git diff 和 VSCode 内置终端联动更灵活
VSCode 内置终端(Ctrl+`)就是你本地 shell,所有 git diff 参数都可用,且输出能被 VSCode 自动识别为可点击链接——比如 git diff --word-diff=color 显示词级差异,或 git diff HEAD~1 -- path/to/file.ts 对比上一次提交的特定文件。
-
git diff --no-index a.js b.js可对比两个未加入 Git 的文件(注意顺序,a 是旧版,b 是新版) - 在 diff 输出里,点击带路径的行(如
src/utils.ts)会直接在编辑器中打开该文件并跳转到对应行 - 若
git diff输出乱码,检查终端编码设置:"terminal.integrated.env.linux": {"LANG": "en_US.UTF-8"}(Linux/macOS)或 Windows 的chcp 65001
遇到 “No changes detected” 却明明改了文件?重点查这三点
这是高频困惑点,不是 VSCode 问题,而是 Git 状态判断逻辑导致的假阴性。
- 文件权限变更(如
chmod +x script.sh)默认不触发 diff,需加--chmod参数或配置git config core.filemode true - 换行符差异(CRLF vs LF)被 Git 自动转换后可能不显示在 diff 中,检查
core.autocrlf设置,临时用git diff --ignore-space-at-eol验证 - 文件被
.gitignore匹配了,VSCode 的源代码管理视图压根不会列出它,运行git check-ignore -v path/to/file确认是否被忽略
Git 差异查看真正卡住人的地方,往往不在功能本身,而在当前文件是否处于 Git 跟踪状态、是否已被暂存、以及换行符/权限这类“隐形变更”是否被纳入比较范围。先跑一遍 git status,再决定用插件、UI 还是命令行,效率最高。

















