git shortlog:如何排除"(cherry picked from commit ____)"等等?



git shortlog对于制作人类可读的更改摘要非常方便。但是,当我从主分支中挑选更改时,我使用 -x 标志进行git cherry-pick,因为它记录了从哪个提交中选取了更改。这会导致短日志中出现一些丑陋:

% git shortlog Version-3.5.3..3.5
Dan S (5):
  Fix typo that causes build fail on big-endian archs, thanks Felipe Sateler     (cherry picked from commit 4588258193072cd2fb845f7fb0b4670d6ad5edf2)
  fix build on ARM (where qreal==float); thanks Felipe Sateler     (cherry picked from commit 976d560060185c1e31c9f40660172f0054a4a05c)
  Strip gremlin characters from JITLib wrapForNodeProxy.sc     (cherry picked from commit d0842acae77a90b5eb9811d947ee2dad2282edff)
  choose clipping rather than wraparound for writing integer-format audio     files (libsndfile setting)
  arm build fix: another double->qreal in QcMultiSlider     (cherry picked from commit 548ad319dddf53e4edac1cfa44b3193027eefda2)

有没有一种简单的方法可以告诉git shortlog我们不想要那些挑选的行(在实际日志中的新行上)?

当然,我知道可以过滤掉它们,例如使用 git shortlog Version-3.5.3..3.5 | sed 's/[(]cherry picked.*$//g' .但似乎 git 应该意识到自己的注释并能够处理它们。我错过了什么?

有没有一种简单的方法告诉 git shortlog 我们不想要那些 挑选行(在实际日志中的新行上)?

目前,仅靠git shortlog没有简单的方法可以做到这一点。

这些精选行被添加到提交消息的第二行,因此它们被大多数 git 工具视为提交标题的一部分。正如 Vince 所建议的那样,可以尝试为短日志条目提供自定义格式(带有--format选项),但是,似乎没有这种漂亮的格式或格式占位符只返回主题的第一行。(见man git log

但似乎 git 应该意识到自己的注释并 能够对付他们。我错过了什么?

git shortlog实际上似乎只知道[PATCH]前缀(准确地说,就正则表达式而言:^s*[PATCH[^]]*])。

综上所述,我认为最好的办法是坚持你的sed替代。

您可以使用 --pretty 参数,如果您需要扫描大量日志,它非常有用:

http://gitimmersion.com/lab_10.html

记得我过去看到过一个非常广泛的资源,但我再也找不到它了。无论如何,如果这个还不够,请进一步搜索。

最新更新