Git中的代码统计命令,统计上传代码量、净增量等

有时候我们在工作中需要做一些代码量的统计,这时候我们可以借助Git的git log配合--numstat选项来统计已提交的代码总量,包括新增和删除的行数。

1、统计整个项目从某一时间点到另一时间点的总行数变化

# 统计从 'start_date' 到 'end_date' 时间段内所有提交的代码行数变动
# 例:统计2024-01-01 到 2024-03-12 (时间自行设置替换即可)
git log --since="2024-01-01" --until="2024-03-12" --pretty=format:'' --numstat \
| grep -v '^$' \
| awk '
{
    add += $1;
    subs += $2;
    loc += $1 - $2
}
END {
    printf "Total added lines: %s, removed lines: %s, net lines: %s\n", add, subs, loc
}'

2、统计某个特定作者在这个时间段内的代码量 -author

# 统计指定作者 'username' 在同一时间段内的代码行数变动

git log --author="username" --since="YYYY-MM-DD" --until="YYYY-MM-DD" --pretty=format:'' --numstat \
| grep -v '^$' \
| awk '
{
    add += $1;
    subs += $2;
    loc += $1 - $2
}
END {
    printf "Author: %s, added lines: %s, removed lines: %s, total lines: %s\n", "username", add, subs, loc
}'



# YYYY-MM-DD 自行替换时间
# awk 脚本读取每一行输出,并累加 $1(添加行数)和 $2(删除行数),最后输出累计的结果。
# grep -v '^$'是用来过滤掉空行,因为--numstat产生的输出中有时会有空白行。

3、统计某个开发人员在某个分支上已提交的代码总量

# 替换 'developer_name' 为你要查询的人员姓名,
# 替换 'branch_name' 为你想要统计的分支名
# 统计增删
git log --author='developer_name' --pretty=tformat: --numstat --branches=branch_name | 
awk '
NF == 3 {plus+=$1; minus+=$2}
END {printf "该开发人员在分支 '%s' 上共增加了 %s 行代码,删除了 %s 行代码。\n", "branch_name", plus, minus}
'

# 若要进一步计算净增行数
git log --author='developer_name' --pretty=tformat: --numstat --branches=branch_name | 
awk '
NF == 3 {plus+=$1; minus+=$2}
END {net = plus-minus; printf "该开发人员在分支 '%s' 上共增加了 %s 行代码,删除了 %s 行代码,净增 %s 行代码。\n", "branch_name", plus, minus, net}
'

注意:

  1. 使用 --author 参数指定了开发人员的名字。
  2. 使用 --branches 参数限制只考虑指定分支的提交。
  3. --pretty=tformat: 是为了不让Git输出额外的信息,仅仅显示 --numstat 的结果。
  4. --numstat 输出每次提交涉及的文件行数变化详情,每行格式为“添加行数 删除行数 文件路径”。
  5. awk 脚本读取每一行输出,并累加 $1(添加行数)和 $2(删除行数),最后输出累计的结果。
  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值