轻松掌握代码审查:difit——你的本地Git差异查看神器

在软件开发的日常工作中,代码审查是一项不可或缺的任务。无论是修复错误、优化代码,还是与团队协作,审查代码都能帮我们提升质量,确保项目顺利推进。然而,很多时候我们依赖像GitHub这样的在线平台来查看代码差异,这在网络不佳或需要快速本地检查时可能会不太方便。今天,我要给大家介绍一款简单又强大的工具——difit。它是一个命令行工具,能让你在本地查看Git提交的差异,还带来了许多实用功能,让代码审查变得更加轻松有趣。


什么是difit?

简单来说,difit是一个轻量级的命令行工具(CLI),可以在你的电脑上启动一个类似GitHub的差异查看器。无论是查看某次提交的改动,还是比较两个分支的差异,它都能帮你快速搞定。它的最大特点是“零配置”——不需要繁琐的设置,安装后直接运行命令就能用起来。

想象一下:你打开终端,输入一行命令,浏览器里就弹出一个清晰的页面,展示代码的改动细节,就像在GitHub上浏览“Files changed”页面一样。不仅如此,你还能在代码旁边添加评论,甚至把这些评论直接复制给AI工具使用。这对喜欢在本地审查代码的开发者来说,简直是得力助手。


为什么选择difit?

difit并不是简单地把Git命令包装一下,它带来了一些独特的功能,让代码审查更高效:

  • 简单上手:只需输入npx difit <commit>,就能立刻查看差异。
  • AI友好:可以在代码中添加评论,并生成AI能直接用的提示,方便与智能工具配合。
  • 终端模式:通过--tui选项,你能在终端里直接查看差异,不用打开浏览器。
  • 多语言支持:自动识别代码语言并高亮显示,阅读更轻松。
  • GitHub集成:直接查看GitHub上的Pull Request差异。

这些特点让difit非常适合那些想在本地快速审查代码,又不想依赖网络工具的开发者。


快速上手:如何使用difit?

想要试试difit?只需要在你的Git项目文件夹里打开终端,输入以下命令:

npx difit

运行后,difit会自动在浏览器中打开一个页面,展示你最近一次提交的代码差异。是不是很简单?接下来,我会详细介绍它的各种用法,让你充分发挥它的潜力。


核心功能详解

1. 查看单次提交的差异

想看看某次提交具体改了什么?difit支持多种方式指定提交:

npx difit 6f4a9b7  # 查看某个特定提交(用commit hash)
npx difit HEAD^    # 查看上一次提交
npx difit feature  # 查看feature分支的最新提交

运行这些命令后,你会看到一个直观的页面,显示文件改动的地方,新增的代码用绿色标出,删除的用红色,清晰明了。

2. 比较两个提交或分支

有时候,我们需要知道两个版本的代码有什么不同,比如当前工作和主分支的差异。difit也能轻松搞定:

npx difit HEAD main      # 比较当前HEAD和main分支
npx difit feature main   # 比较feature分支和main分支
npx difit . origin/main  # 比较当前工作目录和远程main分支

这种比较功能特别适合在合并代码前,快速检查改动是否符合预期。

3. 检查未提交的改动

还没提交的代码也能用difit查看。它支持几个特殊参数:

  • .:显示所有未提交的改动(包括已暂存和未暂存的)。
  • staged:只看已暂存的改动。
  • working:只看未暂存的改动。

试试这些命令:

npx difit .        # 查看所有未提交的改动
npx difit staged   # 查看已暂存的改动
npx difit working  # 查看未暂存的改动

这对检查当前工作状态非常有用,尤其是当你改了很多文件,想理清思路时。

4. 审查GitHub Pull Request

如果你的项目在GitHub上,difit还能直接查看Pull Request的差异:

npx difit --pr https://github.com/owner/repo/pull/123

它会自动处理身份验证。你可以用GitHub CLI登录(推荐)、设置GITHUB_TOKEN环境变量,或者直接查看公开仓库(可能有限制)。这让远程协作审查变得更方便。


评论系统:让审查更智能

difit不仅能看差异,还能让你在代码旁边加注释。这对记录意见或与AI工具协作特别有用。

  • 添加评论:在diff页面上,点击某一行,就能输入你的想法。

  • 编辑评论:随时修改已有的评论。

  • 生成AI提示:每条评论旁边有个“Copy Prompt”按钮,点击后会生成一个格式化的提示,包含文件名、行号和你的评论。比如:

    src/components/Button.tsx:42
    This name should probably be more specific.
    
  • 批量复制:用“Copy All Prompt”按钮,一次性复制所有评论。

  • 保存评论:评论会存在浏览器的localStorage里,按提交分开存储。

这些功能让difit不只是查看工具,还能帮你整理思路,甚至直接把意见交给AI处理。


语法高亮:代码更易读

代码审查时,清晰的展示很重要。difit支持多种编程语言的语法高亮,比如:

  • JavaScript、TypeScript
  • HTML、CSS、JSON
  • Python、Java、C++
  • Shell脚本、SQL、Ruby

它会根据文件后缀自动识别语言,并动态加载高亮模块。如果遇到不认识的语言,就显示纯文本,确保不会出错。这种设计既实用又高效。


更多选项:定制你的体验

difit还提供了一些命令行选项,让你根据需要调整:

选项 默认值 说明
<commit-ish> HEAD 指定提交:hash、分支、HEAD~n等
[compare-with] (可选) 比较的第二个提交
--pr <url> 查看GitHub PR的URL
--port 自动 设置端口号
--host 127.0.0.1 设置主机地址(0.0.0.0可外部访问)
--no-open false 不自动打开浏览器
--mode side-by-side 差异模式:并排或内联
--tui false 用终端界面代替网页
--clean false 启动时清除已有评论

比如,想在终端看差异,可以用:

npx difit --tui

或者不想打开浏览器:

npx difit --no-open

这些选项让difit非常灵活,适应不同场景。


开发与贡献

如果你是开发者,想自己动手改进difit,可以试试这些命令:

# 安装依赖
pnpm install

# 启动开发模式(支持热重载)
pnpm run dev

# 构建并运行生产模式
pnpm run start <commit-ish>

# 构建生产版本
pnpm run build

# 运行测试
pnpm test

# 检查代码格式
pnpm run lint
pnpm run format

difit的架构也很清晰:

  • 命令行:用Commander.js处理输入。
  • 后端:Express和simple-git生成差异。
  • 前端:React 18 + TypeScript + Vite。
  • 样式:Tailwind CSS,模仿GitHub暗色主题。

有兴趣的话,可以看看它的代码,提点建议或者加点新功能。


使用要求

要用difit,你需要:

  • Node.js 版本 ≥ 21.0.0
  • 一个有提交记录的Git仓库

安装非常简单,因为npx会自动帮你下载和运行。


一点实际体验

我最近用difit审查自己的项目,感觉真的很方便。比如,我改了一个功能分支,想看看跟主分支的差别,直接跑了:

npx difit feature main

页面一打开,所有改动一目了然。我还在几个地方加了评论,比如提醒自己“这里变量名可以更清楚点”。后来直接把这些评论复制给AI工具,让它帮我优化代码,省了不少时间。

还有一次,我在没网的地方调试代码,用npx difit --tui在终端里检查未提交的改动,照样顺畅完成任务。不得不说,difit确实让本地审查变得轻松了不少。


总结

difit是一款为开发者量身打造的工具,它把Git差异查看搬到了本地,还加入了评论和AI集成功能。不管你是想快速检查代码,还是准备和团队协作,它都能帮上忙。它的设计简单实用,既适合新手,也能满足老手的定制需求。

如果你也想让代码审查更高效,不妨试试difit。装上它,跑几条命令,也许你会发现它很快成为你工具箱里的常客!