4

我的主要目标是过滤掉所有拉取请求合并,因此理论上我希望以下工作(它没有)

git log --grep="^!(Merge)"

我错过了什么吗?

4

2 回答 2

11

首先,您不能简单地通过在正则表达式中的单词前面加上一个 bang 来否定它(您在哪里找到的?)。您可能为此使用了环视,但常规 grep 正则表达式不支持它们。直接使用 grep 可以传递-P选项以使用更强大的 Perl 正则表达式,但我没有找到 git log 的类似选项。

不过,有一个--no-merges选项可以过滤掉日志中的所有合并提交:

git log --no-merges

手册页说这--no-merges意味着:

不要打印多个父级的提交

于 2012-04-26T14:05:39.660 回答
2

这是不正确的,你蚂蚁使用像这样的正则表达式会更好:

git log | grep -o '^(Merge)'

这将提供更多信息:

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

我想你用过!要反转它,但我知道的唯一已知的反向 revex 搜索方式就像上面一样。仍然 --no-merge 会提供更好的信息,只是为了将来参考而写作

于 2012-04-26T22:55:12.320 回答