您可以使用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
这样可以直接使用grep
,sort
等解析此输出.git是否已提供此功能?
答案 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输出的行获取附加的保持缓冲区的当前内容,在中间留下换行符,然后用选项卡替换。