假设我有一个分支主机有3个提交,注释分别是t123,b1和b12。
* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123
现在,我想使用git log --grep <regex>
来搜索没有t123的日志日志。
我想要的结果是
* b90b03f b12
* 27f7577 b1
那么如何使用正则表达式来满足要求?
答案 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 从某种意义上说,这并非不可能;它太难了,效率低下,最重要的是,没必要。