如何通过提交信息(commit message)获取提交哈希值(commit ID)
根据提交信息获取Git提交哈希值(Commit ID)
没问题!要根据提交信息快速拿到对应的commit ID而不是完整提交详情,你可以用Git的git log或者git rev-list命令,搭配特定参数来实现,下面给你几种实用的方案:
1. 基础方案:模糊匹配提交信息,返回完整哈希
如果只是想匹配包含目标字符串的提交信息,直接用git log的--grep参数过滤,再用--format指定只输出commit ID:
git log --grep="你的提交信息内容" --format="%H"
--grep="xxx":告诉Git筛选提交信息中包含xxx的提交--format="%H":指定输出格式为完整的commit哈希值(如果想要短哈希,把%H换成%h即可)
比如你的提交信息是“修复用户头像上传失败问题”,命令就是:
git log --grep="修复用户头像上传失败问题" --format="%H"
2. 精确匹配提交信息
如果需要严格匹配完整的提交信息内容(避免匹配到包含该字符串的其他提交),加上--fixed-strings(或简写-F)参数:
git log --grep="完全匹配的提交信息" --fixed-strings --format="%H"
3. 只返回最新的匹配结果
虽然你提到提交信息通常唯一,但万一遇到重复的情况,可以用--max-count=1(或简写-n 1)只返回最新的那条提交的哈希:
git log --grep="你的提交信息" --format="%H" --max-count=1
4. 更简洁的方式:用git rev-list
git rev-list本身就是用来输出commit哈希列表的,搭配--grep同样可以实现需求,而且输出更简洁(默认就是完整哈希,没有多余内容):
git rev-list --grep="你的提交信息" HEAD
同样可以搭配-F(精确匹配)和-n 1(只返回最新):
git rev-list --grep="精确提交信息" -F -n 1 HEAD
小提示
如果提交信息里包含引号、空格等特殊字符,你可以用单引号包裹提交信息内容(避免转义麻烦),比如:
git log --grep='提交信息里有"双引号"的情况' --format="%H"
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

