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

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

能在标签里读一个提交以后,还会想问:它和现在的 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 公证,首次打开说明见发布页。


仓库留档

相关推荐
敲代码的玉米C2 小时前
终端里的工具改了文件,砚不能还停在旧内容上
go
敲代码的玉米C2 小时前
功能藏得有点深了,给砚加一个能跟着做的教程
go
敲代码的玉米C2 小时前
一个目录里放了几个仓库,提交按钮到底该操作谁
go
敲代码的玉米C2 小时前
想在 Markdown 预览里改两个字,最后补了一套块编辑
go
敲代码的玉米C2 小时前
不想每次都手动换 DMG,我给砚接了自动更新
go
敲代码的玉米C2 小时前
看完代码先留几条批注,再一起交给终端里的工具
go
云浪16 小时前
Go 并发实战:从零实现一个高并发安全的任务调度器
javascript·后端·go
敲代码的玉米C16 小时前
并排 diff、提交标签:砚的 Git 阅读体验又补了一轮
go
敲代码的玉米C16 小时前
给编辑器补拖拽:标签挪过去,状态也得跟过去
go