如何查询Git仓库中特定文件历次提交对应的全部SHA1哈希值
获取Git仓库指定文件所有历史版本SHA1哈希的方法
以下命令均可直接在Windows命令提示符中运行:
方法1:输出包含提交信息+文件哈希(可读性更高)
命令如下,将其中的<你的文件路径>替换为目标文件的相对路径即可:
git log --follow --pretty=format:"%H %ci %s" -- <你的文件路径> | for /f "tokens=1,*" %a in ('more') do @echo %a %b & git show %a:"<你的文件路径>" | git hash-object --stdin
输出字段依次为:提交哈希、提交时间、提交说明、对应版本文件的SHA1哈希,和你使用git hash-object得到的结果完全一致。
方法2:仅输出纯文件SHA1哈希列表
如果不需要关联提交信息,可使用精简命令:
git log --follow --pretty=format:"%H" -- <你的文件路径> | for /f %a in ('more') do @git show %a:"<你的文件路径>" | git hash-object --stdin
方法3:高性能查询(无需重新计算哈希,适合大文件/多提交场景)
直接读取Git提交记录中存储的文件Blob哈希,运行速度更快:
git log --follow --raw --abbrev=40 --pretty=format:"" -- <你的文件路径> | findstr /r /c:"^:[0-7]* [0-7]* [0-9a-f]* [0-9a-f]* M" | for /f "tokens=4" %a in ('more') do @echo %a
注意事项
- 运行命令前请先切换到Git仓库的任意工作目录下,文件路径填写对应当前目录的相对路径即可
- 如需将命令写入.bat批处理文件运行,请将命令中的
%a替换为%%a,避免批处理变量识别错误 - 命令中的
--follow参数支持追踪文件重命名历史,即使目标文件历史上改过名称也能获取全量历史哈希
内容的提问来源于stack exchange,提问作者uncletonton
相关产品推荐
相关产品推荐

