过滤git log以仅显示带注释的提交

时间:2012-10-29 08:29:03

标签: git

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

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

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

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

2 个答案:

答案 0 :(得分:4)

git notes会为您提供每个音符的ID以及它适用的对象。所以第二列就是你想要的。

$ git notes
f5ac8874676de3029ffc8c31935644ff7c4deae0 07ca160c58cf259fe8bb5e87b9d9a7cbf8845f87
62ecfc95355587d6d1f779fcaca6e4f53d088ccc eb6c60b9dcb56219d9d882759c0bf928f6d6c3fa

使用cut抓取最后一列并将其传递到git show

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

要选择特定的命名空间,请将--ref=namespace添加到git notes

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

初始测试[...]可以防止出现轻微问题:如果不传递任何参数,git show将显示当前结帐。 因此,如果没有笔记,你将会产生误导性的输出。初步测试不是 问题:如果测试失败,即如果没有注释,则不会调用git show。

答案 1 :(得分: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 不会被调用