要查mac上homebrew某formula所有历史版本,需访问其github提交历史页(将brew info中的from url的/blob/master/替换为/commits/master/),手动翻页或用api提取含version的提交;formulae.brew.sh仅显示当前索引的稳定版本,可作辅助验证。

要在 Mac 上用 Homebrew 查找某个第三方库(formula)支持的所有历史版本,不能靠 brew search 或 brew info 直接列出——这些命令只显示当前可用或已安装的版本。你必须回溯到 GitHub 上该 formula 的完整提交历史,从中识别出不同版本对应的 Ruby 文件快照。
确认 formula 名称并定位其 GitHub 仓库路径
打开终端,运行 brew info <formula-name></formula-name>(例如 brew info ffmpeg),在输出中找到 From: 开头的那一行 URL。它形如 https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb。注意:把 /blob/master/ 替换为 /commits/master/,就得到提交历史页地址,例如 https://github.com/Homebrew/homebrew-core/commits/master/Formula/ffmpeg.rb。
这一步必须做准,否则后续看到的不是该 formula 的真实变更记录。如果 brew info 没有显示 From: 行,说明该 formula 可能已被移除或重命名,需改用 brew search 重新核对名称拼写。
在 GitHub 提交历史中筛选目标版本
访问上一步构造出的 /commits/master/Formula/<name>.rb</name> 页面,你会看到按时间倒序排列的每次修改记录。每条记录对应一次 formula 文件的更新,通常包含版本号变更(如 version "4.4.3" 或 url "...v4.4.2.tar.gz")。
滚动浏览或使用浏览器搜索功能(Ctrl+F / Cmd+F)输入 version "、v[0-9]、.tar.gz 等关键词,快速定位含版本标识的提交。点击某次提交 → 点击右上角 View → 再点 Raw,就能看到该次提交时完整的 .rb 文件内容。
注意:GitHub 默认只加载最近 250 次提交。若目标版本较老(比如 2018 年的 node@10),需点击页面底部的 Older 按钮持续翻页,或直接在 URL 后追加 ?since=2018-01-01 限定时间范围。
用官方 formulae.brew.sh 网站辅助验证
打开 https://www.php.cn/link/ed5fecdfbf5ed6b6a2b998b9c4a28821,在顶部搜索框输入 formula 名称(如 openssl)。进入结果页后,向下滚动到 Versions 区域——这里会列出该 formula 当前仍被 Homebrew 官方索引的全部语义化版本(如 3.0.13, 3.1.5, 3.2.1),每个版本旁标注了发布时间和是否为 stable。
这个列表比 GitHub 提交历史更干净,但覆盖范围有限:它只收录仍保留在 master 分支中的 formula 版本快照,不包含已被完全删除或归档的老版本(如已 EOL 的 python@2)。可作为交叉验证手段,而非唯一依据。
批量提取所有曾出现过的版本号(命令行法)
方法一:用 git log 本地解析(需已克隆 homebrew-core)
执行:cd $(brew --repository homebrew-core) && git log --oneline --grep="version" -- Formula/<name>.rb | head -n 50</name>。该命令从本地仓库日志中抓取含 version 字样的提交摘要,适合已完整同步过 homebrew-core 的用户。
方法二:用 curl + grep 远程拉取(免克隆)
运行:curl -s "https://api.github.com/repos/Homebrew/homebrew-core/commits?path=Formula/<name>.rb&per_page=100" | grep -o '"version[^"]*"' | sort -u</name>。它调用 GitHub API 获取最近 100 条提交的原始响应,再提取所有带 version 的字符串并去重排序。注意替换 <name></name> 为实际 formula 名(如 curl .../Formula/redis.rb...)。
【关键前提】该 API 方法依赖 GitHub 的公开接口配额,未登录用户每小时限 60 次请求。若返回空或报错,说明已达上限,需稍后再试或改用网页手动翻查。











