Repolode
ivankovic

ivankovic/omnidiff

用 Rust 编写的内容感知比对工具,基于 tree-sitter 做代码结构化比对,也能比对图片、字体、压缩包和 PDF。

Star
1,168
Fork
28
未关闭 Issue
9
最近提交
20小时前

这是什么?

OmniDiff 是一款命令行与终端比对工具,会根据文件类型选择比对方式。对于 25 种语言的源代码,它使用 tree-sitter 语法解析后逐结构比对,只高亮真正改动的部分,例如被重命名的表达式,而不是把整行标为删除和新增。扩展名无法识别的文件则按纯文本逐行比对。

非文本文件按内容而非文件名识别。图片逐像素比较,动画逐帧比较;字体逐字形比较,压缩包逐文件比较,PDF 逐页比较,并标注每处改动对读者而言的可见程度。其他二进制文件则只给出一行“文件有差异”的提示。

OmniDiff 可以作为交互式双栏查看器运行,也可以输出纯文本或 JSON 供脚本和 CI 使用,并可作为 git difftool、通过 GIT_EXTERNAL_DIFF 驱动的 git diff,以及 Jujutsu(jj)的比对后端。安装方式包括 Cargo、Homebrew、apt、Nix,以及 Linux、macOS、Windows 的预编译二进制。

核心功能

  • 01通过 tree-sitter 语法对 25 种编程与标记语言做结构化比对。
  • 02图片逐像素比较,支持动画逐帧比较。
  • 03字体逐字形比较,PDF 逐页比较。
  • 04压缩包逐文件比较,支持嵌套压缩包。
  • 05提供交互式终端界面、纯文本输出和 JSON 输出。
  • 06可接入 git difftool、git diff 和 Jujutsu(jj)。

适用场景

  • 审查只改动了部分表达式的代码重构。
  • 查看 git 中字体、图标集或 PDF 图表的具体改动。
  • 需要机器可读比对结果的脚本或 CI 流程。
  • 将默认的 git difftool 替换为语法感知的查看器。

快速上手

  1. 1

    使用 Homebrew 安装(macOS 和 Linux)

    brew install ivankovic/omnidiff/omnidiff
  2. 2

    或使用 Cargo 从源码构建(需要 C 编译器和 Rust 1.92 或更高版本)

    cargo install --locked omnidiff
  3. 3

    在两个文件上打开交互式查看器

    omnidiff BEFORE AFTER

使用前须知

  • README 中的徽章标注为 AGPL-3.0-only 许可证(一种 Copyleft 许可证),但仓库元数据未检测到许可证。
  • 从源码构建需要 C 编译器和 Rust 1.92 或更高版本,首次 cargo install 需要几分钟。

收录于专题

标签

常见问题

omnidiff 是什么?
用 Rust 编写的内容感知比对工具,基于 tree-sitter 做代码结构化比对,也能比对图片、字体、压缩包和 PDF。 OmniDiff 是一款命令行与终端比对工具,会根据文件类型选择比对方式。对于 25 种语言的源代码,它使用 tree-sitter 语法解析后逐结构比对,只高亮真正改动的部分,例如被重命名的表达式,而不是把整行标为删除和新增。扩展名无法识别的文件则按纯文本逐行比对。
omnidiff 可以免费使用吗?用的什么许可证?
omnidiff 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
omnidiff 还在维护吗?
活跃维护中。omnidiff 最近一次提交是在 2026年11月6日。
omnidiff 适合用来做什么?
审查只改动了部分表达式的代码重构。 查看 git 中字体、图标集或 PDF 图表的具体改动。 需要机器可读比对结果的脚本或 CI 流程。 将默认的 git difftool 替换为语法感知的查看器。
omnidiff 怎么安装和运行?
使用 Homebrew 安装(macOS 和 Linux): brew install ivankovic/omnidiff/omnidiff 或使用 Cargo 从源码构建(需要 C 编译器和 Rust 1.92 或更高版本): cargo install --locked omnidiff 在两个文件上打开交互式查看器: omnidiff BEFORE AFTER
在哪里获取 omnidiff?
源代码和安装说明在 GitHub 上:https://github.com/ivankovic/omnidiff

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目