5

如何转储我的提交日志,仅显示带有给定命名空间注释的提交日志?

没有注释的提交,或者不属于给定命名空间的注释应该被过滤掉

在文本转储中,我不仅想要注释,还想要提交信息。

我玩过:show refs/notes/,我相信解决方案可能就在那里,而不是使用“git log”。但是,我仍然遇到一些问题,无法找到显示所有提交的正确命令。

4

3 回答 3

6

git notes会给你每个笔记的 id 以及它适用的对象。所以第二列就是你想要的。

$ git notes
f5ac8874676de3029ffc8c31935644ff7c4deae0 07ca160c58cf259fe8bb5e87b9d9a7cbf8845f87
62ecfc95355587d6d1f779fcaca6e4f53d088ccc eb6c60b9dcb56219d9d882759c0bf928f6d6c3fa

使用抓取最后一列cut并将它们传递给git show.

$ [ "$(git notes)" = "" ] || git notes | cut -d' ' -f2 | xargs git show

要选择一个特定的命名空间,添加一个--ref=namespacegit notes.

$ [ "$(git notes --ref=namespace)" = "" ] || git notes --ref=namespace | cut -d' ' -f2 | xargs git show

初始测试 [...] 防止了一个小问题:如果不传递任何参数, git show 将显示当前结帐。因此,如果没有注释,您将获得误导性输出。初始测试没有问题:如果测试失败,即如果没有注释,则不会调用 git show。

于 2012-10-29T08:40:37.357 回答
0

您可以向 Schwern 答案添加测试:

[ "$(git notes)" = "" ] || git notes | cut -d' ' -f2 | xargs git show

或者选择一个特定的命名空间:

[ "$(git notes --ref=namespace)" = "" ] || git notes --ref=namespace | cut -d' ' -f2 | xargs git show

然后,如果初始测试 [...] 失败,即如果没有注释,则不会调用git show 。

于 2016-10-25T15:29:45.507 回答
0

如果您想要git log仅带有附加注释的提交的 -style 报告,那么您可以使用--no-walk参数来告诉git log限制报告仅在命令行上列出的提交。

试试这个:

git notes list | cut -d' ' -f2 | xargs --no-run-if-empty git log --no-walk=sorted

我添加--no-walk=sorted了按提交时间对输出进行排序,而不是按git notes.

您当然可以添加任何其他git log选项来根据需要格式化输出。

于 2021-05-21T17:20:34.813 回答