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

Mic*_*utz 4 git

所以也许我问问题的方式是错误的,但我找不到有关如何做到这一点的信息。我有一个大型 git 存储库,其中有许多人在过去两年中进行了许多提交。有没有人曾经想出一种方法来查询 git 提交历史记录?我是一个 SQL 专家,所以我习惯使用 SQL 来查询数据库(甚至使用 grep 或 find 来查询我的文件系统)。

这些是我想运行的示例查询:

  • 消息包含文本“xyz”的所有提交
  • 消息类似于“%xyz”的所有提交
  • 所有提交均由用户 person@company.com 完成
  • 属于提交 1234abcd 子级的所有提交
  • 日期 1 和日期 2 之间的所有提交
  • 与/或上述的组合

如果我什至可以导出 git 日志,那么我可以使用不同的工具来获取大部分信息(尽管祖先查询/按分支查询可能很困难)。有时,最好直接进入命令行并快速查询以尝试找到不久前的提交。

Kar*_*cki 6

您可以使用git-log 文档git log中解释的各种开关,例如:

消息包含文本“xyz”的所有提交将是:

git log --grep=xyz
Run Code Online (Sandbox Code Playgroud)

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

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

git log --author=person@company.com
Run Code Online (Sandbox Code Playgroud)

--author=<pattern> --committer=<pattern> 将提交输出限制为作者/提交者标题行与指定模式(正则表达式)匹配的输出。如果有多个 --author=<pattern>,则选择作者与任何给定模式匹配的提交(对于多个 --committer=<pattern> 也类似)。

等等基于git-log docs