可解析的git日志输出

时间:2012-11-03 18:04:15

标签: git

您可以使用git log自定义--pretty的输出,并可以使用--numstat显示添加和删除的行数。它看起来像这样:

$ git log --pretty=format:"%h - %ar : %s" --numstat config*.ini

f665c63 - 6 months ago : fixes session end post
1       1       config.ini

4541de2 - 7 months ago : fixes missing strings
6       1       config.ini
3       1       config_office.ini

但我想要的是两者的输出,即提交信息和文件中的更改,每个都显示在一行中。像这样:

1       1       config.ini            f665c63 - 6 months ago : fixes session end post
6       1       config.ini            4541de2 - 7 months ago : fixes missing strings
3       1       config_office.ini     4541de2 - 7 months ago : fixes missing strings

这样可以直接使用grepsort等解析此输出.git是否已提供此功能?

1 个答案:

答案 0 :(得分:1)

据我所知,git log本身无法做到这一点。但是,这个sed命令会执行它:

sed '/^[0-9]\+\t[0-9]\+\t[^\t]\+$/ b file; h; d; : file; G; s/\n/\t/'

它查找--numstat行。任何非numstat行都将复制到保留缓冲区而不会打印。具有numstat输出的行获取附加的保持缓冲区的当前内容,在中间留下换行符,然后用选项卡替换。