如何查找GitHub下载的zip/tar.gz包对应的commit哈希
问题解答
1. GitHub压缩包内是否存储commit哈希?
GitHub官方自动生成的.zip/.tar.gz源码压缩包默认不会把commit哈希写入压缩包内的文件,你可以先通过两个路径快速排查哈希:
- 如果你还保留着原始下载的压缩包,查看文件名:GitHub默认生成的压缩包文件名会携带对应commit的短哈希,格式一般为
[仓库名]-[分支名/标签名]-[7位短哈希].zip/[仓库名]-[7位短哈希].tar.gz - 部分项目的自定义打包脚本会主动把commit哈希写入版本标识文件,你可以在两个目录内全局搜索带
commit、hash、version关键词的文件,比如version.py、_version.py、PKG-INFO、setup.py,看是否有明文存储的完整/短commit哈希
2. 无内置哈希时的commit匹配方法
因为两个目录都对应0.3.5版本,你可以把匹配范围缩小到该版本标签对应的提交前后,操作步骤如下:
- 第一步:克隆原仓库到本地,执行
git clone <原仓库地址>,进入仓库目录后执行git log --oneline v0.3.5,拿到该版本标签对应的commit列表 - 第二步:清理其中一个待匹配目录内你自己的修改内容(如果能回忆起来修改的文件的话),避免自定义改动干扰匹配
- 第三步:将待匹配目录和仓库的指定commit内容做比对,执行命令:
git diff <待校验commit哈希> --no-index /path/to/待匹配目录 /path/to/本地克隆仓库根目录,如果输出的差异仅为你自己做的小改动,说明该commit就是当前目录对应的源commit - 第四步:重复上述操作匹配第二个目录即可
如果嫌逐个commit校验效率低,你可以直接把待匹配目录的所有文件覆盖到本地克隆的仓库目录内,执行git diff,再结合提交日志里的改动说明快速定位对应commit。
提示:两个目录同版本号但差异大,大概率其中一个是版本发布时的标签提交,另一个是该版本发布后、下一版本发布前的开发分支提交,你可以优先匹配标签对应的commit,再校验标签之后的提交,能大幅缩小排查范围。
内容的提问来源于stack exchange,提问作者reikred
相关产品推荐
相关产品推荐

