git 统计代码量等信息-爱代码爱编程
-
获取提交总次数
git log --oneline | wc -l
-
获取某人提交总次数
git log --author="forwardhuan" --oneline | wc -l
-
获取某段时间提交总次数
git log --since="2022-03-01" --until="2023-03-31" --oneline | wc -l
-
获取某段时间每人提交次数
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t,"; git log --author="$name" --since="2022-03-01" --until="2023-03-31" --oneline | wc -l;done
-
获取某人某段时间提交总次数
git log --author="forwardhuan" --since="2022-03-01" --until="2023-03-31" --oneline | wc -l
-
获取提交的所有用户名
git log --format='%aN' | sort -u
-
获取提交的所有用户个数
git log --pretty='%aN' | sort -u | wc -l
-
获取某段时间提交的所有用户名
git log --since="2022-03-01" --until="2023-03-31" --format='%aN' | sort -u
-
获取某段时间提交的所有用户个数
git log --since="2022-03-01" --until="2023-03-31" --format='%aN' | sort -u | wc -l
-
获取某人提交详情(新增行数,删除行数,总计)
git log --author="forwardhuan" --pretty=tformat: --numstat | awk '{add += $1; subs += $2; loc +=$1 - $2 } END { printf "新增行数: %s, 移除行数: %s, 总行数: %s\n", add, subs, loc}'
-
获取某人某段时间提交详情(新增行数,删除行数,总计)
git log --author="forwardhuan" --pretty=tformat: --since="2022-03-01" --until="2023-03-31" --numstat | awk '{ add += $1; subs += $2; loc += $1-$2} END {printf "新增行数:%s, 移除行数:%s, 总行数:%s\n", add, subs, loc}'
-
获取所有人提交的详细信息(新增行数,删除行数,总计)
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t,"; git log --author="$name" --pretty=tformat: --numstat | awk '{add += $1; subs += $2; loc += $1 - $2} END {printf "新增行数:%s, 移除行数:%s, 总行数:%s\n", add, subs, loc}'; done
-
获取所有人某段时间提交的详细信息(新增行数,删除行数,总计)
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t,"; git log --author="$name" --pretty=tformat: --since="2022-03-01" --until="2023-03-31" --numstat | awk '{add += $1; subs += $2; loc += $1-$2} END {printf "新增行数:%s, 移除行数:%s, 总行数:%s\n", add, subs, loc }';done
-
获取所有人提交的详细信息(新增行数,删除行数,总计)
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t,"; git log --author="$name" --pretty=tformat: --numstat | awk '{add += $1; subs += $2; loc += $1- $2} END {printf "新增行数:%s, 移除行数:%s, 总行数:%s\n", add, subs, loc}'; done
-
获取最后一次提交的信息(commit id,作者,时间,内容)
git log -1 --pretty="%H, %an, %cd, %s" --date=format:"%Y-%m-%d %H:%M:%S"
其中–pretty=format:“%xx”可以指定需要的信息,其常用的选项如下
%H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 作者(author)的名字 %aN mailmap的作者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ae 作者的电子邮件地址 %aE 作者邮箱(.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ad 作者修订日期(可以用 -date= 选项定制格式) %aD 日期, RFC2822格式 %ar 作者修订日期,按多久以前的方式显示 %at 日期, UNIX timestamp %ai 日期, ISO 8601 格式 %cn 提交者(committer)的名字 %cN 提交者名字 (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %ce 提交者的电子邮件地址 %cE 提交者 email (.mailmap对应,详情参照git-shortlog(1)或者git-blame(1)) %cd 提交日期 (–date= 制定的格式) %cD 提交日期, RFC2822格式 %cr 提交日期, 相对格式(1 day ago) %ct 提交日期, UNIX timestamp %ci 提交日期, ISO 8601 格式 %d ref名称 %e encoding %s commit信息标题 %f sanitized subject line, suitable for a filename %b commit信息内容 %N commit notes %gD reflog selector, e.g., refs/stash@{1} %gd shortened reflog selector, e.g., stash@{1} %gs reflog subject %Cred 切换到红色 %Cgreen 切换到绿色 %Cblue 切换到蓝色 %Creset 重设颜色 %C(…) 制定颜色, as described in color.branch.* config option %m left, right or boundary mark %n 换行 %% a raw % %x00 print a byte from a hex code %w([[,[,]]]) switch line wrapping, like the -w option of git-shortlog(1).