Git log - 如何列出所有不以特定单词开头的提交

时间:2012-04-26 13:50:43

标签: git git-bash

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

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

我错过了什么吗?

2 个答案:

答案 0 :(得分:11)

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

但是,有--no-merges选项将从日志中过滤掉所有合并提交:

git log --no-merges

手册页说明--no-merges表示:

  

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

答案 1 :(得分:2)

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

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

这将提供更多信息:

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

我觉得你用过了!要反过来,但我所知道的反向雷克斯搜索的唯一已知方式就像上面一样。仍然是--no-merge将提供更好的信息,只为未来的反思写作

相关问题