如何过滤不包含特定单词的提交的 git 日志?
我查看了正则表达式站点,并在 Git Bash 中尝试了一些没有成功的案例。
您可以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"
正如克劳迪乌所说
一般来说,编写一个不包含特定字符串的正则表达式是很痛苦的。我们必须为计算模型执行此操作 - 您采用 NFA,它很容易定义,然后将其简化为正则表达式。不包含“猫”的事物的表达式大约有 80 个字符长。
你可以用相反的方式来做,不是优雅,而是工作方式
git log ... | grep -v "someword"
PS - RE 中的否定是 ^ 前缀,它(前缀用法)可能需要 -E(扩展正则表达式) for git log
,但是将否定词定义为正则表达式的 词只是真正的噩梦
您只能通过这种方式搜索提交消息,这是通过使用-m
签入中的标志提交代码来完成的。例子:
commit -m "message describing awesome code changes"
这会将消息保存"message describing awesome code changes"
在日志中,这意味着搜索单词awesome
,例如,现在将返回它作为结果。
您正在搜索的短语/单词/消息是否可能从未包含在提交消息中?