如何查询git提交记录历史?

4
也许我提问的方式不对,但我找不到如何做到这一点的信息。我有一个大的git仓库,里面有很多人在过去两年里提交的许多提交记录。是否有任何方法可以查询git提交历史记录?我是一个SQL专家,所以我习惯使用SQL来查询数据库(甚至是使用grep或find来查询文件系统)。
以下是我想运行的示例查询:
- 所有消息中包含文本“xyz”的提交 - 所有消息类似于“%xyz”的提交 - 所有由用户person@company.com完成的提交 - 所有子提交为1234abcd的提交 - 日期1和日期2之间的所有提交 - 上述查询的AND/OR组合
如果我甚至可以导出git日志,那么我可以使用其他工具来获取大部分信息(虽然祖先查询/按分支查询可能会很困难)。有时候只需快速转到命令行并进行查询即可尝试查找很久以前的提交。

主要使用 git log 参数,类似于这个这个。如果您阅读了关于 git log文档,您会发现有很多这样的选项。 - Cory Kramer
1个回答

6
你可以使用不同的选项与git log一起使用,如git-log docs所述:
例如:包含文本“ xyz”的所有提交将为:
git log --grep=xyz

--grep=<pattern> 限制输出的提交只包含与指定模式(正则表达式)匹配的日志消息。 如果有多个 --grep=<pattern>,则选择其消息与任何给定模式匹配的提交(但请参见 --all-match)。

由用户 person@company.com 完成的所有提交将是:

git log --author=person@company.com

--author=<pattern> --committer=<pattern> 将提交记录限制为具有与指定模式(正则表达式)匹配的作者/提交者头行的记录。使用多个--author=<pattern>时,选择作者与任何给定模式匹配的提交记录(类似地,对于多个--committer=<pattern>)。

等等,基于git-log文档


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