日常项目管理和开发中经常使用的Git统计命令

发布于:2024-04-16 ⋅ 阅读:(20) ⋅ 点赞:(0)

引言

        在现代软件开发中,Git作为版本控制系统的核心工具,其功能不仅仅局限于代码的版本控制。通过编写和利用Git的统计脚本,我们可以从不同的角度深入了解项目的开发情况,包括但不限于代码提交频率、活跃开发者、文件修改趋势等。这里将进入Git统计脚本的世界,分享几个实用的应用场景,并提供详细的脚本示例。


应用场景一:统计项目整体提交次数

脚本实例与描述

git rev-list --all --count

        这个Git命令会返回项目自创建以来所有提交的总数,直观反映项目的历史积累和开发活跃度。例如,对于一个拥有大量提交记录的成熟项目,此数字应相对较高;而对于新启动的项目,这个数字则较小。

应用场景二:按开发者统计提交数量

脚本实例与描述

git shortlog -sn

        此脚本用于按照贡献者(即邮箱)统计提交数量,结果以降序排列。这对于评估团队成员的贡献度和参与度非常有用。每一个条目都会显示开发者的名字及其对应的提交次数。

应用场景三:统计每日/每周提交活动

脚本实例与描述

-- 需要在Git Bash里面执行,若在Idea的Terminal里面执行则报:'uniq' 不是内部或外部命令,也不是可运行的程序或批处理文件。
git log --pretty=format:"%ad" --date=short | sort | uniq -c

        该脚本首先按日期格式化输出所有的提交日志,然后排序并去除重复项,最后统计每天的提交次数。如果你想统计每周的提交活动,只需在uniq命令后添加 -W 7 参数(表示按7天窗口进行计数)。这样可以清晰地看到项目在各个时间段的工作节奏和进度。

应用场景四:统计单个文件或目录的修改频率

脚本实例与描述

-- CSDN小小野猪
git log --follow --stat -- <file_path>

-- 示例:
git log --follow --stat -- csfw/src/main/java/com/test/common/service/impl/FileServiceImpl.java

        这个命令可以追踪指定文件(替换<file_path>为实际路径)的历史修改记录,并以统计的方式展示每次提交对该文件的改动。这对于理解特定模块或功能的演化过程极其有帮助。

应用场景五:按照commitId查看提交历史

脚本实例与描述

-- CSDN小小野猪
git log --pretty=oneline

        这个命令可以按照commitId查看提交历史。

应用场景六:查看某一用户在两个指定的日期之间的提交记录

脚本实例与描述

-- CSDN小小野猪
-- 查看用户Agill在20240422这一日的提交记录
git log --oneline --since="2024-04-22" --until="2024-04-24" --author="Agill"  

这个命令可以查看某一用户在两个指定的日期之间的提交记录。

应用场景七:按日期统计代码行数命令

脚本实例与描述

-- CSDN小小野猪
-- 查看提交行数、删除行数,总行数
git log --since=2024-01-01 --until=2024-08-31 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

按日期统计代码行数命令。

应用场景八:查询某个用户某段时间的提交总数

脚本实例与描述

-- CSDN小小野猪
-- 查看提交行数、删除行数,总行数
git log --since=2024-01-01 --until=2024-12-31 --author="zhangsan" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

按日期、用户统计代码行数命令。


结语

        Git统计脚本为我们提供了丰富的项目洞察力,让我们能够更好地量化项目进展、团队协作效率甚至代码质量。希望以上的示例能激发你对Git更深层次应用的兴趣,并将其融入到日常的项目管理和开发流程中,助力团队效能提升。在实际操作中,根据具体需求,还可以结合shell脚本、awk、sed等工具进一步定制复杂的统计逻辑,满足更多个性化的统计需求。