你能把git log log regex匹配组放在git pretty输出中吗?

时间:2016-09-24 10:38:42

标签: git

假设我有以下查询:

git log -100 -i --grep="^\[.*JIRA.*\]"

这假定git注释类似于

"[JIRA1234] Adding the graph to the customer balance page"

然后我想格式化输出以显示匹配的组,例如[JIRA1234]

现在我想我应该可以这样做:

git log -100 -i --grep="^\[.*JIRA.*\]" --pretty="%1"

但这不起作用。

另一种方法是通过管道输入grep

git log -100 -i --grep="^\[.*JIRA.*\]" --pretty=oneline | grep -o '\[.*JIRA.*'

但是你失去了使用git log --pretty输出添加作者姓名和其他技巧的能力。

我的问题是:你能把git log log regex匹配组放在git pretty输出中吗?

1 个答案:

答案 0 :(得分:0)

我找不到任何直接处理此请求的方法。如果模式"^\[.*JIRA.*\]"在提交日志消息中仅出现一次,则此命令可以提供帮助:

git log -100 -i --grep="^\[.*JIRA.*\]" --pretty=%H | while read line
do 
  p=$(git log -1 $line --pretty=%B | grep -i -o -e "^\[.*JIRA.*\]")
  git log -1 $line --pretty="$p %h %an %cn foo bar"
done

如果多次出现模式,则需要一些额外的命令,如head -1或另一个while循环。