我在存储库中使用git note。有时我需要查找包含给定字符串的注释的提交。到目前为止,我正在使用以下命令:
git log --show-notes=* --grep="PATTERN" --format=format:%H
这里的问题是,即使不是仅在提交消息中的注释中,它也会使用PATTERN打印每个提交SHA。 有更好的方法吗?
答案 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