两个提交到底差在哪:给砚补上比较和补丁导出

4 阅读3分钟

两个提交到底差在哪:给砚补上比较和补丁导出

能在标签里读一个提交以后,还会想问:它和现在的 HEAD 差多少?这两个提交之间又改了什么?如果只要把这次改动带走,能不能直接导出补丁?

alpha.13 接着补了这些入口。底层 Git 操作继续参考 Mayoi,交互放进砚已有的提交菜单和 diff 标签。

箭头指向新版本

菜单里有「HEAD → 此提交」和「此提交 → HEAD」,也可以先选一个提交作为起点,再去另一个提交发起比较。

箭头左边是旧内容,右边是新内容。方向反过来,新增和删除也会反过来,批注自然不能两边混用。

这里我特意保住了一个细节:打开比较时,先把两端解析成完整哈希,再保存到标签里。后面切分支或者又提交了代码,已经打开的比较仍然看原来那两份内容。

不然标签还挂着“HEAD”,内容却跟着变了,人读到一半很难发现比较对象已经换过。

历史内容只能按历史来读

比较标签沿用单栏、并排、折叠和翻页键,也能留批注。但历史里的行号,不能直接当作工作区文件的行号去编辑,更不能在这里暂存一段旧 diff。

标签恢复时要记住仓库、两端版本、所在列、光标和滚动位置。如果对象已经被清理,或者仓库被移走,就显示错误。拿一个“差不多”的当前版本顶上去,反而会误导人。

重命名和二进制文件也给出明确表示。对于合并提交,仍按第一个父提交解释改动,这个比较范围需要保留。

补丁带走的是改动,不是红绿颜色

提交菜单里新增导出和复制补丁。普通提交对第一个父提交,根提交对空树,二进制内容也包含在内。

调用 Git 时关闭终端颜色、外部 diff 和文本转换。人平时配置的漂亮输出,未必适合作为后续应用的补丁。

图形版走系统保存对话框;终端版输入新路径,目标已存在就拒绝覆盖。取消以后不留下半份导出文件。

源码测试里也分别准备了根提交、合并、二进制、反向比较等仓库场景。这个功能如果只拿一处文本修改试一下,很容易把少见情况漏掉。

顺手把“复制提交号”也补了

在提交元信息行按回车或双击,就能复制完整哈希。“显示所有分支”也会随会话保存,不必每次重新打开。

远端入口支持 GitHub、GitLab 和 Bitbucket。拼链接前去掉凭据、查询参数和片段,再选定仓库远端;不认识的托管服务就报清楚,不猜地址。终端版把链接复制出来。

这一轮补完后,历史标签可以多留一会儿:先固定两份代码,看完差异,留下意见,必要时导出补丁。切换当前分支,不会把正在读的那份比较也一起改掉。

下载试用

本文功能进入 v0.1.0-alpha.13,可以下载对应版本体验。

下载地址核对于 2026-10-19。安装包适用于 macOS 13+、Apple Silicon,目前尚未 Apple 公证,首次打开说明见发布页。


仓库留档