如何在git log中排除`Notes added by 'git notes add'`对应的提交?
解决方案
方案1(推荐,无格式错乱问题)
Git自带提交信息过滤能力,无需通过管道外部过滤,完全保留原输出的颜色和图表格式。在你原命令的基础上追加--grep="Notes added by 'git notes add'" --invert-grep参数即可,完整命令如下:
git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all --grep="Notes added by 'git notes add'" --invert-grep
原理说明:--grep参数用于匹配提交说明包含指定内容的提交,--invert-grep用于反选排除匹配到的提交,过滤逻辑由Git原生实现,不会破坏输出的颜色编码和折线图表格式,同时完全保留普通提交绑定的备注内容显示。
方案2(兼容Git 1.7.1无--invert-grep的场景)
如果你的Git版本过旧不支持--invert-grep参数,可强制Git输出带颜色的内容后再用grep过滤,避免颜色错乱:
git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all --color=always | grep -v 'Notes added by' | less -r
原理说明:
追加--color=always参数强制Git输出到管道时也保留颜色编码,grep过滤时不会移除颜色码,配合less -r即可正常解析颜色,避免图表折线颜色错乱。
内容的提问来源于stack exchange,提问作者Fun Mun Pieng
相关产品推荐
相关产品推荐

