如何获取GitHub最新发布标签对应的提交哈希ID?
获取特定版本提交哈希的两种Bash方案
没问题,我给你整理了两种简单直接的方案,都是一行命令就能搞定,还能直接嵌入到你的脚本里,完全不用复杂的Bash知识:
方案一:通过提交消息匹配最新版本提交
你可以用git log筛选出所有以version uped开头的提交,然后只取最新的那一个的哈希值:
# 获取最新的"version uped"开头提交的短哈希 latest_version_hash=$(git log --grep="^version uped" --format="%h" -n 1)
参数解释:
--grep="^version uped":精确匹配以version uped开头的提交消息(^符号确保是开头,避免匹配到包含该字符串的其他提交)--format="%h":只输出提交的短哈希(如果需要完整哈希,换成%H即可)-n 1:只返回最新的1条结果
之后直接在rebase命令里用这个变量就行:
git rebase -i $latest_version_hash
方案二:通过最新标签获取对应提交哈希
因为你提到这些版本提交都会打标签作为发布节点,直接取最新标签对应的哈希会更准确:
# 获取最新标签对应的短哈希 latest_tag_hash=$(git rev-parse --short $(git describe --abbrev=0 --tags))
参数解释:
git describe --abbrev=0 --tags:找出仓库里最新的标签(忽略轻量标签/附注标签的差异,只取最新的)git rev-parse --short:把标签转换成对应的提交短哈希(要完整哈希就去掉--short)
同样,直接用变量执行rebase:
git rebase -i $latest_tag_hash
小提示
如果你的脚本需要确保命令执行成功,可以加个简单的判断,避免找不到目标提交时出错:
latest_version_hash=$(git log --grep="^version uped" --format="%h" -n 1) if [ -z "$latest_version_hash" ]; then echo "未找到匹配的版本提交!" exit 1 fi git rebase -i $latest_version_hash
内容的提问来源于stack exchange,提问作者ArekBulski




