Repolode
Wilfred

Wilfred/difftastic

一款基于语法结构而非逐行比较的命令行 diff 工具,重排代码时也能准确显示真实改动。

Star
26,158
Fork
534
未关闭 Issue
282
最近提交
3天前

这是什么?

Difftastic 是一款结构化 diff 工具,它不逐行比较文件,而是基于语法树比较两个文件。即使代码被重新格式化或拆分到更多行,它也只高亮真正发生变化的语法元素。

工具只在语言语法层面有意义的地方考虑空白字符,因此单纯的缩进调整会被识别出来。对于无法识别的文件类型,它会退回到按行比较并高亮单词的模式。输出采用便于阅读的左右并排视图,而不是用于生成补丁。

它支持 git 等版本控制系统,可以把带冲突标记的文件拆成两侧分别比较,也提供只检查语法是否变化、通过退出码返回结果的模式。

核心功能

  • 01基于语法树比较代码,重新格式化不会产生大量噪音式改动。
  • 02支持 30 多种编程语言。
  • 03只在语法上有意义时才标出空白字符的变化。
  • 04可与 git 及其他版本控制系统配合使用。
  • 05能比较合并冲突标记两侧的内容。
  • 06提供仅检查语法是否变化的模式,无需生成完整 diff。

适用场景

  • 审查包含大量格式调整或结构重构的提交。
  • 阅读 Rust、JavaScript、HTML 等语言的大型重构差异。
  • 在 CI 中检查同一文件的两个版本在语法上是否不同。
  • 更清晰地并排查看合并冲突中的真实改动。

快速上手

  1. 1

    按照手册中的安装指南安装 difftastic

  2. 2

    使用 difft 比较两个文件

    difft foo1.c foo2.c

使用前须知

  • 文件变更较多时性能下降明显,并且可能占用大量内存。
  • 它始终认为顺序有意义,因此集合元素或未排序键等重新排序的内容会显示为变更。
  • 它不支持合并,也不会生成可供之后应用的补丁。

收录于专题

标签

常见问题

difftastic 是什么?
一款基于语法结构而非逐行比较的命令行 diff 工具,重排代码时也能准确显示真实改动。 Difftastic 是一款结构化 diff 工具,它不逐行比较文件,而是基于语法树比较两个文件。即使代码被重新格式化或拆分到更多行,它也只高亮真正发生变化的语法元素。
difftastic 可以免费使用吗?用的什么许可证?
difftastic 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
difftastic 还在维护吗?
活跃维护中。difftastic 最近一次提交是在 2026年11月4日。
difftastic 适合用来做什么?
审查包含大量格式调整或结构重构的提交。 阅读 Rust、JavaScript、HTML 等语言的大型重构差异。 在 CI 中检查同一文件的两个版本在语法上是否不同。 更清晰地并排查看合并冲突中的真实改动。
difftastic 怎么安装和运行?
按照手册中的安装指南安装 difftastic 使用 difft 比较两个文件: difft foo1.c foo2.c
在哪里获取 difftastic?
源代码和安装说明在 GitHub 上:https://github.com/Wilfred/difftastic

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

相关项目