我的主要目标是过滤掉所有的拉取请求合并,理论上我希望以下操作可以实现(但事实并非如此)
git log --grep="^!(Merge)"
我有遗漏吗?
首先,你不能简单地在正则表达式中加一个感叹号来否定一个单词(你从哪里找到的这种方法?)。你可能已经使用了lookarounds来实现这个效果,但是常规的grep正则表达式不支持它们。直接使用grep时,您可以传递-P
选项以使用更强大的Perl正则表达式,但我没有在git日志中找到类似的选项。
不过,有一个--no-merges
选项可以从日志中过滤掉所有合并提交:
git log --no-merges
man页表示--no-merges
的意思是:
不输出具有多个父级的提交
你不能像那样使用正则表达式,以下是更好的方法:
git log | grep -o '^(Merge)'
这个命令可以提供更多信息:
git log --pretty=format:'%h by %an, %ar, %s' | grep -o '^((?!Merge).)*$'
我认为你使用了!来反转它,但我知道的唯一已知的反转正则表达式搜索的方法就是上面的。但是,--no-merge会提供更好的信息,只是写作未来的参考。
git log
本身可以提供更多的信息。 - KL-7