我的主要目的是过滤掉所有拉取请求合并,因此理论上我希望以下工作(它没有)
git log --grep="^!(Merge)"
我错过了什么吗?
答案 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将提供更好的信息,只为未来的反思写作