Git log解析trailers时如何排除cherry pick相关信息?
Git解析提交Trailer忽略Cherry Pick记录的方法
问题根因
Git默认的Trailer解析规则要求,有效Trailer必须是提交消息末尾连续的键: 值格式行。你遇到的情况是cherry pick记录行不符合Trailer格式,且位于第二个提交的消息最末尾,截断了默认解析逻辑,导致前面的Signed-off-by、Acked-by等有效Trailer无法被识别。
解决方案
方法1:全Git版本兼容方案
使用git interpret-trailers命令显式解析所有符合格式的Trailer,不受非Trailer行位置影响:
# 直接输出所有提交的所有有效Trailer git log --format="%B" | git interpret-trailers --parse
如果需要对应到每个提交,可以用遍历方式:
for commit in $(git rev-list HEAD); do echo "commit $commit" git show -s --format="%B" $commit | git interpret-trailers --parse echo done
方法2:Git 2.35及以上版本简化方案
高版本Git的%(trailers)格式化占位符支持non-contiguous参数,可解析提交消息中所有符合格式的Trailer,无需满足末尾连续要求:
git log --format="%(trailers:non-contiguous)"
内容的提问来源于stack exchange,提问作者rongon
相关产品推荐
相关产品推荐

