git diff在浏览器里看,push 之前就能看

旧的 重新设计的 diff 审阅方式。

rediff 把任意 git diff 打开成一个快速的 GitHub 风格审阅页面。不用开 PR,也不用先 push:一个二进制文件,在笔记本或远程开发机上都能用。

  • Rust 编写
  • 20 万行 diff 秒开
  • 单个二进制 6–8 MB
  • 空闲内存约 13 MB
  • 支持远程开发机
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rediff-app/rediff/releases/latest/download/rediff-installer.sh | sh

// 用法

一条命令,任意对比

在仓库里运行 rediff,它会启动本地服务器、打印地址,并自动打开浏览器。

  • rediff工作区 vs HEAD,包含未跟踪文件
  • rediff --cached暂存区 vs HEAD
  • rediff main工作区 vs main
  • rediff main feature两个分支之间的对比
  • rediff HEAD~3..HEAD -- src提交区间,限定路径
~/code/rediff
$ rediff main
rediff: main ↔ working tree
  local:   http://127.0.0.1:41823/auth?token=5c1f8e0a93d24b7e6f0c2a91d8e4b3f7
  network: http://10.0.4.27:41823/auth?token=5c1f8e0a93d24b7e6f0c2a91d8e4b3f7

// 功能

PR 级别的审阅体验,不需要 PR

在 GitHub 上审阅时依赖的功能,现在直接用在你本机的改动上。

双栏或统一视图

随时切换布局。长行自动换行,双栏两侧始终保持对齐。

记录审阅进度

标记 Viewed 自动折叠文件,也可以直接隐藏已读文件。文件内容再次变化时,标记自动取消。

每个提交,一键查看

History 列出当前分支的提交,点开任意一个查看它的改动。给了路径参数时列表也会按路径筛选。

边改边看

rediff 监听工作区、index 和 refs。保存文件后约三分之一秒,页面就会更新。

为远程开发机设计

启动时同时打印本机地址和局域网地址,远程机器上的 diff 可以直接在你笔记本的浏览器里打开。每个 URL 都带一次性 token。

超大 diff 依然流畅

文件滚动到时才加载,只渲染可见的行。20 万行的改动也能满帧滚动。

和 git 完全一致

rediff 直接调用 git,.gitattributes、重命名检测和你配置的 diff.algorithm 都和 git diff 一致。

键盘优先

j k 切换文件,/ 筛选,v 标记已读,c 折叠,? 查看全部快捷键。

// 性能

快在关键的地方

测试对象:505 个文件的对比,其中一个文件改了 20 万行。

288ms首次加载那个 20 万行改动的文件
2.7ms从服务端缓存再次加载同一文件
≈130ms从打开页面到第一批行出现
≈330ms从保存文件到页面显示新内容

// 安装

一行命令安装

  • 单个二进制文件,网页界面已内置
  • 提供 macOS、Linux、Windows 的 x86_64 和 ARM64 预编译版本
  • 随时运行 rediff-update 升级
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rediff-app/rediff/releases/latest/download/rediff-installer.sh | sh

安装到 ~/.cargo/bin。从源码构建需要 Rust、Node.js 20+ 和 git。各平台的压缩包见 GitHub Releases。

// 常见问题

常见问题

怎么在浏览器里查看 git diff?

安装 rediff,在仓库里运行 rediff。它会启动本地服务器、打印地址,并自动打开浏览器。想对比别的内容,加上分支或提交区间即可,比如 rediff main 或 rediff HEAD~3..HEAD。

怎么在 push 或开 PR 之前审阅自己的改动?

运行 rediff 查看工作区和 HEAD 的差异,包含未跟踪文件;运行 rediff --cached 只看已暂存的内容。所有内容都从本地仓库读取,不需要先 push。

能审阅远程开发机上的 diff 吗?可以通过 SSH 吗?

可以。把二进制文件复制到远程机器,在笔记本的浏览器里打开打印出的 network 地址。这个地址是明文 HTTP,在不可信的网络上请使用 --host 127.0.0.1 配合 SSH 端口转发。

rediff 能处理多大的 diff?

一个改了 20 万行的文件约 300 毫秒加载完成,并能满帧滚动,因为文件滚动到时才加载,且只渲染可见的行。上限是所有展开文件合计约 150 万显示行。

运行 rediff 需要什么?

只需要 git。服务器、网页界面和 39 种语言的语法高亮都编译进了一个可执行文件,不需要 Node.js、运行时或配置。支持 macOS、Linux 和 Windows。

我的代码会离开本机吗?

不会。rediff 是本地服务器,用 git 读取仓库并自己提供页面,没有云服务,也不需要账号。每个 URL 都带一次性 token,没有它就读不了 API。

下一个 diff,用 rediff 来看

安装后在任意仓库里运行,在别人看到之前,先自己把改动审一遍。