如何查询Co-Authored-By的git日志

7
如果我想查找由Joe Blo编写的提交记录,非常简单:
git log --author=joe.blo@x.com

但是如果提交是按照以下方式创建的:

git commit -m "Our awesome code changes.
>
>
Co-authored-by: Joe Blo <joe.blo@x.com>
Co-authored-by: Henry Chilinsky <henry@example.com>"

如此描述:https://help.github.com/en/github/committing-changes-to-your-project/creating-a-commit-with-multiple-authors

上述示例中,Joe 被认定为合著者,但我的原始查询 --author=joe.blo@x.com 将找不到该提交。如何查找 Joe 作为合著者的提交?

编辑:首选命令行解决方案,但支持此功能的第三方工具将获得额外加分: tiggithubtower,等等。

2个回答

12
你可以使用trailer选项,因为Co-authored-by是提交消息中的一个trailer。
git log --format="%h %s %(trailers:key=Co-authored-by)"

但您需要对结果进行grep,
valueonly将过滤值(例如 Joe),但无论键是什么(Co-authored-by


4

我最初尝试了这个:

git log --format="%h %(trailers:key=Co-authored-by)" | grep="Joe Blo <joe.blo@x.com>"

但对于大型仓库(~1.5百万次提交),它的性能表现不佳。

使用内置的--grep更快:

git log --grep="Co-authored-by: Joe Blo <joe.blo@x.com>"

或者

git log --format="%h %(trailers:key=Co-authored-by)" --grep="Joe Blo <joe.blo@x.com>"

后两者执行速度相同。


1
不错。确实加上 --grep 应该会有帮助。 - VonC
谢谢。git log --pretty="%C(cyan)%ad %<(7,trunc)%aN %C(yellow)%h %C(cyan)%d %Creset%s %(trailers:key=Co-authored-by)" --date-order --graph --date=iso --grep="Matt" 对我很有帮助。虽然我还不知道如何以这种方式在GitHub上搜索,但至少现在我可以在本地这样做了。我将您的答案与https://stackoverflow.com/a/73584751/470749和https://github.blog/2018-01-29-commit-together-with-co-authors/结合在一起。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接