如何生成最近一个月的Git提交日志,并将其导出为CSV?

91

有没有一种方法可以生成过去一个月的 git 提交日志,并将其导出为 CSV 文件?我正在寻找可以从命令行或第三方应用程序运行的工具。我需要以下列:作者,提交日期,主题,编辑的文件和哈希。

3个回答

138

你可以使用git log--since--pretty选项,例如:

git log --since="last month" --pretty=format:'%h,%an,%ar,%s' > log.csv

请参考Git日志手册中的“PRETTY FORMATS”部分获取更多选项。


1
完美运行!谢谢。有没有办法在另一列中包含哪个文件被影响/编辑的信息? - Justin Jackson
2
这更加棘手,因为通常每个提交会影响不止一个文件。你想要每个文件一行(因此对于同一次提交会有多行)还是每个提交受影响的文件列表(用分号分隔?)?无论哪种情况,这都需要一个shell脚本吧。 - Simon
1
这很好。但是是否还有一个选项,可以选择上个月从1号到最后一天的数据? - hugo der hungrige
8
如果提交信息中有逗号,添加引号可以改进输出的 csv 文件。"%h","%an","%ar","%s" - dwenaus
我的结果格式如下:提交ID,用户,x小时前,提交消息的第一行 - testing
在 [alias] 部分下,编辑 ~/.gitconfig 将其定义为别名:logcsv = log --pretty=format:'%h,%an,%ad,\"%s\"' --date=iso - Paul Rougieux

42

此命令创建一个格式化的CSV文件,其中包含哈希、用户、日期/时间、描述、更改的文件、插入和删除。

git log --pretty=format:'"%h","%an","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv

4
合并提交让我的输出混乱了,加上--no-merges参数有所帮助。对于包含逗号的提交文本,我使用%x09作为制表符分隔符而不是逗号。 - Emmanuel Touzery
1
@EmmanuelTouzery - 感谢您的评论,%x09 真的很好用;我有一个存储库,其中提交既有逗号又有引号,我以为我不得不编写脚本... - Jiří Baum
由于某种原因,会产生一些令人讨厌的垂直空白。 - Sentry.co

9

此外,如果您想应用日期范围,请按照以下格式添加“--after”或“--before”:“yyyy-mM-d”

git log --before="2016-12-1" --pretty=format:'"%h","%an","%ae","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接