做代码审查、提交评审、或想把某次代码变更归档分享时,终端里git diff的输出看着很累,大改动尤其难读。git-diff-html把这件事可视化:给它一个 ref 或几个文件,它输出一个左右双栏、旧/新并排、精确到字符级高亮的单文件 HTML 报告,离线可用、方便转发给同事。
一句话:纯 Python 标准库写的单文件脚本,把 Git 差异渲染成漂亮、可交互的 HTML 报告。
【此处建议放一张报告截图:左右双栏 + 侧边文件列表】
一、核心功能
- 左右双栏对比:变更以「旧 / 新」并排展示,一目了然
- 双重差异高亮:整行着色 + 字符级内联高亮,精确到改动的字符
- 多种对比模式:工作区 vs HEAD、工作区 vs 指定提交、两个提交之间、暂存区
- 文件列表导航:侧边栏展示变更文件与状态(修改/新增/删除/重命名),点击跳转、滚动自动定位
- 视图切换:「完整对比」与「只看变化」一键切换
- 分栏交互:拖拽调整左右列宽、双击复位,横向滚动条跨栏同步
- C/C++ 语法高亮:关键字、类型、字符串、注释、预处理指令、数字着色
- 统计摘要:报告顶部汇总各文件增删行数与总量
- 零依赖:纯 Python 标准库实现,无第三方包
二、三种获取方式
1. 单文件脚本(零安装)
只要 Python 3.7+ 和 Git 2.x:
chmod +x git_diff_html.py sudo ln -s "$(pwd)/git_diff_html.py" /usr/local/bin/gdhtm注意:脚本必须用LF换行,否则执行会报
python3\r找不到。file git_diff_html.py不应出现CRLF。
2. Debian 包
已进入 Debian unstable(1.2.1):
sudo apt install git-diff-html3. VS Code 插件
商店搜索「GitDiff HTML」(publisher:symthosm)。装好后在文件/文件夹/编辑器/源代码管理上右键,选Generate Git Diff HTML Report即可生成报告;还附带一个Symthosm C/C++主题。
【此处建议放一张 VS Code 插件截图】
三、快速上手
gdhtm [ref] [file ...] 或 gdhtm -r REF1 REF2 [file ...]常用示例:
gdhtm # 工作区 vs HEAD,自动打开报告 gdhtm abc123 # 工作区 vs 提交 abc123 gdhtm abc123 file.c # 只对比 file.c gdhtm -r aaa bbb # 提交 aaa vs bbb gdhtm -s # 暂存区变更 gdhtm old.c new.c # 非 Git 目录下,直接对比两个文件命令行选项:
| 选项 | 说明 |
|---|---|
-o, --output FILE | 输出 HTML 路径(默认/tmp临时文件,经本地 HTTP 打开) |
-c, --commit REF | 基准提交(默认HEAD) |
-r, --range REF1 REF2 | 直接对比两个提交 |
-s, --staged | 暂存区变更 |
--no-open | 生成后不自动打开 |
--no-syntax | 关闭 C/C++ 高亮 |
-C, --context N | 上下文行数(默认3) |
四、原理(很轻)
git diff取变更文件列表,git show读各版本内容difflib.SequenceMatcher计算行级 + 字符级 diff- 渲染成单文件 HTML(内置 CSS/JS,无外部资源)
五、相关链接
- GitHub(CLI):GitHub - LuHaoran1981/GitDiffLocal · GitHub
- GitHub(VS Code 插件):GitHub - LuHaoran1981/vscode-git-diff-html · GitHub
- VS Code Marketplace:GitDiff HTML - Visual Studio Marketplace
- Debian 追踪:git-diff-html - Debian Package Tracker
许可证:GPL-3.0。© 2026 上海先道智觉科技有限责任公司(Symthosm)