如何在没有特定提交的情况下搜索 git 日志
how to search git log without a certain commit
假设我有一个分支 master 有 3 个提交,评论分别是 t123、b1 和 b12。
* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123
而现在,我想用git log --grep <regex>
搜索没有t123的log日志。
我想要的结果是
* b90b03f b12
* 27f7577 b1
那么如何使用正则表达式来满足要求呢?
听起来您想要的是包括提交消息不匹配某种模式的所有提交,但是--grep
包括匹配的提交 匹配某种模式。但是 "how do I write a regexp that matches everything except some pattern" 的答案是:你没有。1
你不需要,因为你可以使用其他东西(或者更准确地说,额外的东西)来排除其中包含字符串"t123"的提交.具体来说,如果你看the documentation for git log
,你会发现它不仅有它的--grep=<pattern>
选项,还有一个--invert-grep
选项:
--invert-grep
Limit the commits output to ones with log message that do not match
the pattern specified with --grep=<pattern>
.
也就是说,您无需发明某种反正则表达式,只需告诉命令将 search 中的 result 反转为正则表达式。由于您的正则表达式只是一个固定字符串,其中没有元字符:
git log --grep t123 --invert-grep
会完成这项工作。 (--grep
和 <pattern>
之间的 =
部分对于 --grep
是可选的。)
1从某种意义上说,这并非不可能;这太难了,效率低下,最重要的是,没有必要。
假设我有一个分支 master 有 3 个提交,评论分别是 t123、b1 和 b12。
* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123
而现在,我想用git log --grep <regex>
搜索没有t123的log日志。
我想要的结果是
* b90b03f b12
* 27f7577 b1
那么如何使用正则表达式来满足要求呢?
听起来您想要的是包括提交消息不匹配某种模式的所有提交,但是--grep
包括匹配的提交 匹配某种模式。但是 "how do I write a regexp that matches everything except some pattern" 的答案是:你没有。1
你不需要,因为你可以使用其他东西(或者更准确地说,额外的东西)来排除其中包含字符串"t123"的提交.具体来说,如果你看the documentation for git log
,你会发现它不仅有它的--grep=<pattern>
选项,还有一个--invert-grep
选项:
--invert-grep
Limit the commits output to ones with log message that do not match the pattern specified with--grep=<pattern>
.
也就是说,您无需发明某种反正则表达式,只需告诉命令将 search 中的 result 反转为正则表达式。由于您的正则表达式只是一个固定字符串,其中没有元字符:
git log --grep t123 --invert-grep
会完成这项工作。 (--grep
和 <pattern>
之间的 =
部分对于 --grep
是可选的。)
1从某种意义上说,这并非不可能;这太难了,效率低下,最重要的是,没有必要。