在终端里查看 git diff 是一种日常操作,但默认的 git diff 输出往往难以快速定位关键变更。differ 是一个专为终端设计的 Git diff 查看器,用双面板布局和语法高亮让代码审查变得更直观。

项目概览

属性内容
GitHubJanSmrcka/differ
Stars20
语言Go
特点双面板布局、语法高亮、vim 键绑定、AI 辅助 commit
最后更新6 天前

它解决了什么问题

日常开发中,审查代码变更通常面临几个问题:

  1. 纯文本 diff 难以阅读 — 没有语法高亮时,很难快速识别修改的具体内容
  2. 上下文丢失 — 默认 diff 只显示变更行, surrounding code 的上下文往往需要多次跳转查看
  3. commit 信息编写耗时 — 面对大量变更时,撰写清晰的 commit message 是个负担

differ 用终端 UI 的方式重新包装了 git diff 体验。

核心特性

双面板布局

左侧显示变更前的代码,右侧显示变更后的代码,修改位置对齐显示。这种并排对比比传统的行内 diff 更容易理解结构性变更。

语法高亮

内置了对主流编程语言的语法高亮支持,包括 Go、TypeScript、Python、Rust 等。关键字、字符串、注释用不同颜色区分,让 diff 中的实际代码逻辑一目了然。

Vim 键绑定

对于习惯 vim 的用户来说,导航体验很直接:

  • j/k 上下滚动
  • h/l 切换文件
  • q 退出
  • g 跳转到文件顶部

AI 辅助生成 commit

这是比较特别的功能。differ 集成了 OpenAI API,可以根据当前的变更内容自动生成 commit message。当你面对一堆杂乱的修改不知道如何总结时,这个功能能节省不少时间。

使用方式:

# 设置 OpenAI API key
export OPENAI_API_KEY=your_key

# 运行 differ 后按 'c' 键生成 commit 建议
differ

快速开始

安装(需要 Go 1.21+):

go install github.com/JanSmrcka/differ@latest

使用:

# 查看当前工作区的变更
differ

# 查看特定文件的 diff
differ path/to/file.go

# 查看 staged 的变更
differ --staged

同类对比

工具Stars特点
delta26.5k功能最全面的 diff 高亮工具,支持 side-by-side 和行内两种模式
difftastic21.8k基于语法的 diff,能理解代码结构而非纯文本对比
gitui21.6k完整的 Git TUI,包含 diff 查看只是其中一部分功能
differ20专注 diff 查看,轻量快速,带 AI commit 生成功能

differ 的定位很明确:不做完整的 Git 客户端,只做 diff 查看这件事,并加上 AI commit 作为差异化功能。

适用场景

  • 快速审查变更 — 提交前快速浏览一遍改了什么
  • review 前的自检 — 在创建 PR 之前自己先过一遍 diff
  • AI 辅助提交 — 不想花时间写 commit message 时

注意事项

  • AI commit 功能需要 OpenAI API key,会产生 API 调用费用
  • 项目目前还比较早期(20 stars),功能相对简单,但核心体验已经可用
  • 目前只支持 macOS 和 Linux,Windows 支持还在计划中

总结

differ 是一个小而精的工具,它不试图替代 deltagitui 这样的成熟方案,而是提供了一个轻量、专注的选择。如果你经常在终端查看 git diff,且希望有并排对比和 AI commit 辅助功能,值得一试。


属性内容
仓库https://github.com/JanSmrcka/differ
许可证MIT
语言Go
维护者@JanSmrcka