Git log-如何列出所有不符合';不要以一个特定的词开头

Git log-如何列出所有不符合';不要以一个特定的词开头,git,git-bash,Git,Git Bash,我的主要目标是过滤掉所有的pull请求合并,因此理论上我希望下面的方法能够起作用(它不能) 我错过了什么吗?首先,你不能简单地通过在regexp中的一个单词前面加上一个“砰”来否定它(你在哪里找到的?)。您可能已经使用了,但是常规的grep regexp不支持它们。直接使用grep,您可以传递-P选项以使用功能更强大的Perl regexp,但我没有找到git log的类似选项 但是,有一个--无合并选项将从日志中筛选出所有合并提交: git log --no-merges 手册页上说,--n

我的主要目标是过滤掉所有的pull请求合并,因此理论上我希望下面的方法能够起作用(它不能)


我错过了什么吗?

首先,你不能简单地通过在regexp中的一个单词前面加上一个“砰”来否定它(你在哪里找到的?)。您可能已经使用了,但是常规的grep regexp不支持它们。直接使用grep,您可以传递
-P
选项以使用功能更强大的Perl regexp,但我没有找到git log的类似选项

但是,有一个
--无合并
选项将从日志中筛选出所有合并提交:

git log --no-merges
手册页上说,
--no merges
表示:

不要打印具有多个父级的提交


这是不对的,您可以像这样使用正则表达式,这样更好:

git日志| grep-o'^(合并)

这将提供更多信息:

git log--pretty=格式:'%h by%an,%ar,%s'|grep-o'^((?!Merge)。*$'


我想你用过!要反转它,但我知道的唯一已知的反转revex搜索方法是如上所述。尽管如此--no merge仍然可以提供更好的信息,只是为了将来的参考而编写

不幸的是,这将只返回提交消息,而
git log
本身可以提供更多的信息。更新了我的答案,但您的答案仍然更好,只是为了将来的参考谢谢您的答案Learath2。接受KL-7的事件,尽管这不是我想要的。尽管如此,它还是成功了:D
git log --no-merges