主题主要涵盖它,但为了避免任何歧义 - 我有兴趣审核特定开发人员有多少次提交已恢复(恢复的人不重要)。我似乎无法找到任何搜索内容(我的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,但是我想要一种编程方式来审核任何作者的任何存储库。
答案 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
以输出有关原始提交的其他信息。
这是否指向正确的方向?