我已经查看了论坛,但没有找到结果。
要求:
运行GIT LOG(格式)命令,并将结果写入Excel文件。
我看过一些例子,其中使用GIT Log命令可以将数据写入CSV文件,但是格式化需要双倍的工作量。
任何实用工具或方法都会有所帮助。
谢谢! Milind
Git提供了使用pretty
选项来控制如何格式化日志输出的方法。看一下这个:
git log --pretty=format:%h,%an,%ae,%s
这将以(哈希[缩写]、作者名称、作者电子邮件、主题)的格式打印日志。
要查看所有格式选项的完整列表:
git help log
向下滚动直到看到格式选项列表。
要重定向输出,请使用以下>
重定向运算符:
git log --pretty=format:%h,%an,%ae,%s > /path/to/file.csv
git log --no-merges --since='mm-dd-yyyy' --pretty=format:%h,%an,%ae,%s > c:\dev\history.csv
- CF5(%x00)
分隔列并转义内容的方法:git log --format='%h%x00%an%x00%ae%x00%s' | perl -pe 'chomp; $_ = join(",", map { s/"/""/g; "\"$_\"" } split /\0/) . "\n"'
- Zalastax%ad
与--date=short
结合来添加日期列。 - Yaroslav Stavnichiygit log --pretty=format:'"%h","%ad","%an","%s"' --date=iso-strict
- 这样当备忘录中有逗号时就很清楚了。 - bassguy007我来分享我的看法,供有需要的人参考:
echo "commit id,author,date,comment,changed files,lines added,lines deleted" > res.csv
git log --since='last year' --date=local --all --pretty="%x40%h%x2C%an%x2C%ad%x2C%x22%s%x22%x2C" --shortstat | tr "\n" " " | tr "@" "\n" >> res.csv
sed -i 's/ files changed//g' res.csv
sed -i 's/ file changed//g' res.csv
sed -i 's/ insertions(+)//g' res.csv
sed -i 's/ insertion(+)//g' res.csv
sed -i 's/ deletions(-)//g' res.csv
sed -i 's/ deletion(-)//g' res.csv
将其保存为git-logs-into-csv.sh
文件或仅将其复制/粘贴到控制台中。
我认为这相对比较容易理解,但以防万一:
--all
从所有分支获取日志--since
限制我们想要查看的提交数量--shortstat
- 获取有关提交所做内容的一些想法简单
git log --pretty=format:%h,%ad,%an,%ae,%s > gitlogs.csv
#!/bin/bash
REPO=$1
DIR=`realpath -L ./$REPO`
echo going to compute stats for $DIR
cd $DIR
git checkout main
git pull
git log --since='last year' --date=short --pretty="%x40%h%x2C%an%x2C%ad%x2C%x22%s%x22%x2C" --shortstat | tr "\n" " " | tr "@" "\n" > res.csv
sed -i 's/ files changed//g' res.csv
sed -i 's/ file changed//g' res.csv
sed -i 's/ insertions(+)//g' res.csv
sed -i 's/ insertion(+)//g' res.csv
sed -i 's/ deletions(-)//g' res.csv
sed -i 's/ deletion(-)//g' res.csv
mv res.csv git-log.csv
awk -i inplace 'BEGINFILE{print "commit,user,date,comment,files changed,insertions,deletions"}{print}' git-log.csv
sed -i '/^$/d' git-log.csv
cd -
git log --oneline | tr "\r" " > ~/gitlog.csv
- ʰᵈˑ