过滤Git日志以查找不包含特定单词的提交

时间:2012-11-28 21:27:01

标签: git

如何针对不包含特定单词的提交过滤git日志?

我查看了regexp网站,并在Git Bash中尝试了一些没有成功的案例。

3 个答案:

答案 0 :(得分:2)

您可以使用git log --grep="<your string>"结合--invert-grep参数来反转搜索条件(从Git for Windows 2.6.2开始)。

实施例

查找提交消息包含字符串foo的提交:

git log --grep="foo"

查找提交消息不包含字符串foo的提交:

git log --invert-grep --grep="foo"

答案 1 :(得分:1)

您只能通过这种方式搜索提交消息,这可以通过在您办理登机手续时使用-m标志提交代码来完成。例如:

commit -m "message describing awesome code changes"

这会将消息"message describing awesome code changes"保存在日志中,这意味着搜索单词awesome作为示例现在将返回此结果。

您搜索的短语/字/消息是否可能从未包含在提交消息中?

答案 2 :(得分:0)

如上所述by Claudiu

  

一般来说,编写一个不包含特定字符串的正则表达式会很痛苦。我们必须为计算模型执行此操作 - 您可以使用NFA,这很容易定义,然后将其缩减为正则表达式。不包含“cat”的东西的表达式大约有80个字符。

你可以反过来,而不是优雅,但工作方式

git log ... | grep -v "someword"

PS - 否定RE是^前缀,它(前缀用法)可能需要-E(扩展正则表达式)git log,但定义否定词 作为单词 for regexp只是真正的噩梦