如何格式化git log输出:每行显示文件及对应提交日期
解决方案
可以通过结合git log和awk命令实现你想要的格式,具体命令如下:
git --no-pager log --name-only --pretty=format:"%cd" --date=format:"%Y-%m-%d" --diff-filter=A -- rewiser/ | awk 'NF { if ($0 !~ /^rewiser\//) { date = $0 } else { print $0 " - " date } }'
命令说明:
git log 核心参数:
--pretty=format:"%cd":仅输出提交日期,剔除默认的提交信息头部内容--date=format:"%Y-%m-%d":指定日期输出格式为「年-月-日」--name-only:只显示当前提交涉及的文件路径--diff-filter=A:仅筛选出新增的文件-- rewiser/:限定只处理rewiser目录下的文件
awk 处理逻辑:
NF:跳过日志中的空行,只处理有效内容- 行内容判断:如果当前行不是
rewiser/开头(即日期行),就把该行内容暂存为date变量;如果是文件路径行,就将路径和日期拼接成「文件名 - 日期」的格式输出
如果你的文件路径规则有变化(比如存在更深层级的子目录),可以把判断条件改成$0 ~ /\./(匹配带后缀的文件行),或者根据实际路径特征调整匹配规则。
内容的提问来源于stack exchange,提问作者monte
相关产品推荐
相关产品推荐

