查找由作者还原的提交

时间:2018-01-15 19:32:24

标签: git audit git-revert author

主题主要涵盖它,但为了避免任何歧义 - 我有兴趣审核特定开发人员有多少次提交已恢复(恢复的人不重要)。我似乎无法找到任何搜索内容(我的google-fu在这里让我失望)。

例如,请考虑此提交历史记录:

* 76b203f "gddc" 37 seconds ago (HEAD -> master)
| Revert "file 1 added"
* 6da3eea "gddc" 52 seconds ago
| file2 added
* c940460 "gddc" 61 seconds ago
  file 1 added

一眼就能看出它的'很容易看出我在这里还原了提交1,但是我想要一种编程方式来审核任何作者的任何存储库。

1 个答案:

答案 0 :(得分:3)

值得注意的是,git没有记录任何类型的元数据,这些元数据表示"此提交会恢复该提交"。虽然git建议默认提交消息,其中显示,"这将恢复提交...",没有任何内容可以阻止某人更改该消息。只要您确信人们维护默认消息,您就可以找到恢复提交,例如...

git log --grep reverts

这将为您提供如下输出:

commit 563a99c7bd36998afb7a1957eaf29b0966402a77 (HEAD -> master)
Author: Example User <user@example.com>
Date:   Mon Jan 15 14:35:36 2018 -0500

    Revert "first"

    This reverts commit 131e6f65c9a78c5476921b6c2f8632661a2d71b6.

您希望生成一个已还原的提交ID列表。您可以将输出传输到awk,如下所示:

git log --grep reverts | awk '/This reverts commit/ {print $4}' | cut -f1 -d.

它会为您提供一个提交ID列表:

131e6f65c9a78c5476921b6c2f8632661a2d71b6

您可以将该列表提供给xargs以查找有关原始提交的信息,例如:

git log --grep reverts | 
  awk '/This reverts commit/ {print $4}' | cut -f1 -d. |
  xargs -iCID git show --quiet --format='%ae' CID

以上使用%ae从每个还原的提交中提取作者电子邮件,例如:

new_dev@example.com

您可以将参数修改为--format以输出有关原始提交的其他信息。

这是否指向正确的方向?