如何过滤掉不包含特定单词的git提交记录?
我已经查看了一些正则表达式网站,并在Git Bash中尝试了一些案例,但并没有成功。
我已经查看了一些正则表达式网站,并在Git Bash中尝试了一些案例,但并没有成功。
你可以使用git log --grep="<你的字符串>"
,结合--invert-grep
参数来反转搜索条件(适用于Git for Windows 2.6.2版本以上)。
查找提交信息包含字符串foo
的提交:
git log --grep="foo"
查找提交信息不包含字符串foo
的提交:
git log --invert-grep --grep="foo"
如 Claudiu所述
一般来说,编写不包含特定字符串的正则表达式是很麻烦的。我们必须为计算模型做这个工作 - 你拿一个NFA,定义起来很容易,然后将其简化为正则表达式。不包含“cat”的表达式大约有80个字符长。
你也可以用反向方式实现,虽然不太优雅,但是可行的方法:
git log ... | grep -v "someword"
PS - 在RE中否定是^前缀,它(前缀使用)可能需要-E(扩展正则表达式)用于git log
,但是为regexp定义否定词作为单词只是真正的噩梦。
您只能通过使用-m
标志在您的check-in中提交代码来搜索提交信息。例如:
commit -m "message describing awesome code changes"
这将在日志中保存消息"描述代码更改的消息"
,这意味着例如搜索单词awesome
时,现在将返回此结果。
您正在搜索的短语/单词/消息是否可能从未包含在提交消息中?
git log --grep=specificword
,但这会显示包含specificword
的提交消息,而我想要的是不包含specificword
的提交消息日志。 - jsmith