☰
git-diff-html:把 Git 差异一键生成左右双栏 HTML 报告(附 VS Code 插件 + Debian 包)
2026/11/5 6:55:29 网站建设 项目流程

做代码审查、提交评审、或想把某次代码变更归档分享时,终端里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-html

3. 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)

四、原理(很轻)

  1. git diff取变更文件列表,git show读各版本内容
  2. difflib.SequenceMatcher计算行级 + 字符级 diff
  3. 渲染成单文件 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)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询