如何针对不包含特定单词的提交过滤git日志?
我查看了regexp网站,并在Git Bash中尝试了一些没有成功的案例。
答案 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只是真正的噩梦