如何在没有特定提交的情况下搜索git日志

时间:2016-11-11 09:23:01

标签: regex git git-log

假设我有一个分支主机有3个提交,注释分别是t123,b1和b12。

* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123

现在,我想使用git log --grep <regex>来搜索没有t123的日志日志。 我想要的结果是

* b90b03f b12
* 27f7577 b1

那么如何使用正则表达式来满足要求?

1 个答案:

答案 0 :(得分:2)

听起来你想要的是包含其提交消息匹配某些模式的所有提交,但--grep包括匹配某些模式的提交。但是“如何编写匹配除了某些模式之外的所有的正则表达式”的答案是:你没有。 1

您不需要,因为您可以使用其他(或更确切地说,另外一些)来排除其中包含字符串“t123”的提交。具体来说,如果您查看the documentation for git log,您会发现它不仅有--grep=<pattern>选项,还有--invert-grep选项:

  

--invert-grep
   将提交输出限制为具有不匹配的日志消息的输出              使用 --grep=<pattern> 指定的模式。

也就是说,您只需告诉命令将结果搜索中反转为正则表达式,而不是发明某种反正则表达式。由于你的正则表达式只是一个没有元字符的固定字符串:

git log --grep t123 --invert-grep

将完成这项工作。 (=--grep部分之间的<pattern>对于--grep是可选的。)

1 从某种意义上说,这并非不可能;它太难了,效率低下,最重要的是,没必要。