Git日志命令无法列出上次发布标签后的所有提交求助
问题排查与解决方案
你的命令问题出在**--grep和范围语法的结合逻辑**上:Git会先应用--grep="release/ tag v$(poetry version -s)"过滤提交,再在这个过滤结果里取..HEAD范围的提交——这意味着它只会显示那些既在..HEAD范围内,又匹配提交信息的提交,而不是把匹配到的提交作为范围的起点。
正确的实现方式
你需要先定位到上次发布的提交哈希,再以此为起点列出后续提交,具体有两种方法:
方法1:分步执行
先获取上次发布的提交哈希(取最近的匹配项):
LAST_RELEASE=$(git log --grep="release/ tag v$(poetry version -s)" --pretty=format:"%h" --max-count=1)注意:如果当前
poetry version -s是即将发布的版本,你需要替换成上一个已发布的版本号(比如v1.2.1),确保匹配到上次发布的提交。列出该提交之后到HEAD的所有提交:
git log --pretty=format:"%h - %s (%ad)" --date=short ${LAST_RELEASE}..HEAD
方法2:合并为单条命令
直接把获取提交哈希的命令嵌入到git log的范围参数中:
git log --pretty=format:"%h - %s (%ad)" --date=short $(git rev-parse --grep="release/ tag v$(poetry version -s)" --max-count=1 HEAD)..HEAD
额外提示
如果你的发布流程中会给每个版本打对应tag,可以直接用tag作为范围起点,更简洁:
git log --pretty=format:"%h - %s (%ad)" --date=short $(git describe --abbrev=0 --tags)..HEAD
这条命令会自动获取最近的tag作为范围起点,列出之后的所有提交。
内容的提问来源于stack exchange,提问作者Usuário 6789
相关产品推荐
相关产品推荐

