查找具有特定git note的提交

时间:2018-09-06 11:18:46

标签: git git-notes

我在存储库中使用git note。有时我需要查找包含给定字符串的注释的提交。到目前为止,我正在使用以下命令:

git log --show-notes=* --grep="PATTERN" --format=format:%H

这里的问题是,即使不是仅在提交消息中的注释中,它也会使用PATTERN打印每个提交SHA。 有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

有一个占位符,用于格式字符串%N中的注释。我不知道如何一行打印注释,所以我使用循环来测试所有可到达的提交的注释。

尝试

git log --format=%H | while read commit;do
    git log -1 $commit --format=%N | if grep -q "PATTERN";then echo $commit;fi;
done

您可以将echo $commit更改为git log -1 --show-notes $commit

答案 1 :(得分:0)

笔记存储在COMMIT版本的TREE中,该笔记被“隐藏”在笔记引用的下方(默认为refs/notes/commits)。这意味着您可以像处理内容一样处理它们。

$ git grep Testing refs/notes/commits
refs/notes/commits:fad066950ba73c309e80451d0d0f706e45adf5a8:This is a test - Testing

$ git show fad0669
commit fad066950ba73c309e80451d0d0f706e45adf5a8
Author: Mark Adelsberger <adelsbergerm@xxx>
Date:   Thu Sep 6 07:51:15 2018 -0500

    1

Notes:
    This is a test - Testing

diff --git a/file1 b/file1
index e69de29..038d718 100644
--- a/file1
+++ b/file1
@@ -0,0 +1 @@
+testing