假设我有以下查询:
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输出中吗?
答案 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
循环。