differ:20⭐的终端 Git diff 查看器,AI 辅助生成 commit
在终端里查看 git diff 是一种日常操作,但默认的 git diff 输出往往难以快速定位关键变更。differ 是一个专为终端设计的 Git diff 查看器,用双面板布局和语法高亮让代码审查变得更直观。
项目概览
| 属性 | 内容 |
|---|---|
| GitHub | JanSmrcka/differ |
| Stars | 20 |
| 语言 | Go |
| 特点 | 双面板布局、语法高亮、vim 键绑定、AI 辅助 commit |
| 最后更新 | 6 天前 |
它解决了什么问题
日常开发中,审查代码变更通常面临几个问题:
- 纯文本 diff 难以阅读 — 没有语法高亮时,很难快速识别修改的具体内容
- 上下文丢失 — 默认 diff 只显示变更行, surrounding code 的上下文往往需要多次跳转查看
- 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 | 特点 |
|---|---|---|
| delta | 26.5k | 功能最全面的 diff 高亮工具,支持 side-by-side 和行内两种模式 |
| difftastic | 21.8k | 基于语法的 diff,能理解代码结构而非纯文本对比 |
| gitui | 21.6k | 完整的 Git TUI,包含 diff 查看只是其中一部分功能 |
| differ | 20 | 专注 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 是一个小而精的工具,它不试图替代 delta 或 gitui 这样的成熟方案,而是提供了一个轻量、专注的选择。如果你经常在终端查看 git diff,且希望有并排对比和 AI commit 辅助功能,值得一试。
| 属性 | 内容 |
|---|---|
| 仓库 | https://github.com/JanSmrcka/differ |
| 许可证 | MIT |
| 语言 | Go |
| 维护者 | @JanSmrcka |