过滤不包含特定单词的Git提交记录

4
如何过滤掉不包含特定单词的git提交记录?
我已经查看了一些正则表达式网站,并在Git Bash中尝试了一些案例,但并没有成功。
3个回答

7

你可以使用git log --grep="<你的字符串>",结合--invert-grep参数来反转搜索条件(适用于Git for Windows 2.6.2版本以上)。

示例:

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

git log --grep="foo"

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

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


1

Claudiu所述

一般来说,编写不包含特定字符串的正则表达式是很麻烦的。我们必须为计算模型做这个工作 - 你拿一个NFA,定义起来很容易,然后将其简化为正则表达式。不包含“cat”的表达式大约有80个字符长。

你也可以用反向方式实现,虽然不太优雅,但是可行的方法:

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

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


0

您只能通过使用-m标志在您的check-in中提交代码来搜索提交信息。例如:

commit -m "message describing awesome code changes"

这将在日志中保存消息"描述代码更改的消息",这意味着例如搜索单词awesome时,现在将返回此结果。

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


1
我认为我应该调用 git log --grep=specificword,但这会显示包含 specificword 的提交消息,而我想要的是不包含 specificword 的提交消息日志。 - jsmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接