赞
踩
有时候我们在工作中需要做一些代码量的统计,这时候我们可以借助Git的git log
配合--numstat
选项来统计已提交的代码总量,包括新增和删除的行数。
- # 统计从 '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
- }'
- # 统计指定作者 '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产生的输出中有时会有空白行。

- # 替换 '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}
- '
注意:
- 使用
--author
参数指定了开发人员的名字。- 使用
--branches
参数限制只考虑指定分支的提交。--pretty=tformat:
是为了不让Git输出额外的信息,仅仅显示--numstat
的结果。--numstat
输出每次提交涉及的文件行数变化详情,每行格式为“添加行数 删除行数 文件路径”。- awk 脚本读取每一行输出,并累加
$1
(添加行数)和$2
(删除行数),最后输出累计的结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。