如何通过git修订版本号反向查询对应的commit hash值
反向获取对应commit hash的Git命令
你通过git rev-list --count <commit-hash>拿到的数值,是从当前分支根提交出发,遍历到目标提交时的总提交数(包含目标提交自身),可以直接用以下命令反向查询对应的commit hash:
基础查询命令
以你提到的版本号62383为例,直接执行:
git rev-list --reverse HEAD | sed -n '62383p'
执行后输出的结果就是版本号对应的完整commit hash。
命令逻辑说明
git rev-list --reverse HEAD会按提交时间正序输出当前分支所有提交的hash:第一行是仓库最早的根提交(对应count值为1),最后一行是当前HEAD指向的最新提交(对应count值为当前分支总提交数)sed -n 'Np'的作用是提取输出结果的第N行,正好对应count值为N的提交hash
注意事项
- 上述命令默认基于当前分支HEAD做查询,如果你当初统计count值时是基于其他分支/指定提交,把命令里的
HEAD替换成对应的引用即可 - 数字和commit hash的映射强依赖提交历史顺序,如果分支后续做过变基、cherry-pick、新增/删除提交等改动,提交顺序发生变化,映射关系就会失效,必须保证查询时的提交历史和你当初统计count值时完全一致,才能得到正确结果
快捷查询方式
如果你已经知道当前分支总提交数M(可通过git rev-list --count HEAD获取),也可以用提交偏移量直接查询,不需要遍历整个提交列表:
# 把N替换为你存储的修订版本号 git rev-parse HEAD~$((M - N))
比如当前分支总提交数M=62383,要查N=62383对应的hash,代入后就是git rev-parse HEAD~0,会直接返回HEAD的commit hash,结果和基础查询命令完全一致。
内容的提问来源于stack exchange,提问作者Michael Fourie
相关产品推荐
相关产品推荐

