当前位置: 首页 > article >正文

使用git log统计代码行数

1.背景

在软件开发过程中,代码行数是一个非常重要的指标,可以用来衡量代码的质量和开发效率。Git是一个流行的版本控制系统,它可以记录和跟踪代码的修改历史。通过使用Git,我们可以很容易地统计代码行数。下面是一些常用的Git命令和解释,用于统计代码行数。

2.找到要统计的git commitId信息

查看当前分支的最早提交(即最早的CommitId):git log --reverse <branch-name> | head -1

查看当前分支的最近一次提交:git log <branch-name> | head -1

查看当前分支第一次从master分支开始分叉的位置:git log --reverse HEAD..$(git merge-base HEAD master)

3.校验commitId对应的提交,是否正确

查看指定commitId的提交信息和修改内容: git show ${commitId}

查看某个分支上某个人的第一次提交:git log --reverse <branch-name> --author="null <aa@gmail.com>" | head -1

找到某个提交的前一个提交的commit id:git log --pretty=oneline 0b971fa90bfbbdcae0357a1d6efa4da432d7f0d0^

4.统计代码行数

(1)查询时间范围的提交行数命令

git log [某个分支名] --author="[某个作者]" --since="[起始日期]" --until="[结束日期]" --pretty=tformat: --numstat --pretty="%H"  | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'

命令含义

其中 git log 命令用于获取提交历史记录,--author 选项用于指定提交者,--since--until 选项用于指定时间范围。--pretty=tformat: --numstat --pretty="%H" 选项用于输出提交的 commit ID 和新增、删除的行数。最后,awk 命令用于计算行数。

使用demo

git log master --author="test <aa@gmail.com>" --since="2022-12-31" --until="2023-03-31" --pretty=tformat: --numstat --pretty="%H"  | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'

(2)查询时间范围、commit范围的提交行数命令

git log [某个分支名] --author="[某个作者]" --since="[起始日期]" --until="[结束日期]" --pretty=tformat: --numstat --pretty="%H" [startCommit]..[endCommit] | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'

命令含义

${startCommit}..${endCommit} 表示 commit 范围,即从 startCommitendCommit 的提交历史记录。其他选项和命令与上一个命令类似,最后也用 awk 命令计算行数。

使用demo

git log master --author="test <aa@gmail.com>" --since="2022-12-31" --until="2023-03-31" --pretty=tformat: --numstat --pretty="%H" ${startCommit}..${endCommit} | awk 'NF==3 {plus+=$1; minus+=$2; total += $1 + $2;} END {printf("%d,%d,%d", plus, minus, total)}'

http://www.kler.cn/news/10322.html

相关文章:

  • 【K8S系列】深入解析无状态服务
  • 文件访问被拒绝?5个解决方法!
  • 云原生周刊:一文读懂 Pod 网络 | 2023.4.10
  • Jmeter接口测试和性能测试
  • 力扣刷题笔记26——最小的k个数/快速排序学习/快排与冒泡的时间复杂度
  • 信息与计算科学有哪些SCI期刊推荐? - 易智编译EaseEditing
  • 如何用nodejs构造一个网站爬虫
  • 傅盛“追风”GPT,猎户星空春天来了?
  • 【WebGIS实例】(7)MapboxGL绘制不同颜色的Symbol图标
  • 服务(第五篇)Nginx!!!
  • 2023年全国最新道路运输从业人员精选真题及答案48
  • 【Chatgpt4 教学】 NLP(自然语言处理)第十课NLP文本分类应用和卷积神经网络(CNN)
  • BFC理解和应用
  • 【Java EE】-多线程编程(十) HashMapHashTableConcurrentHashMap之间的区别
  • chapter-1数据管理技术的发展
  • 私有化部署VideoTogether一起看视频
  • 微积分——极值定理的证明
  • Jetson nano部署剪枝YOLOv8
  • 技术分享 | observer 资源水位介绍
  • Java多线程面试题
  • GEE:支持矢量机(SVM)分类教程
  • 基于JSP的网上购物系统的设计与实现(论文+源码)_kaic
  • 业务项目管理软件使用推荐
  • java day4
  • js读取fetch的返回值
  • Linux ln 命令
  • 运行时内存数据区之程序计数器
  • 【Vite】对 CSS 处理
  • Excel技能之数据验证,总有一款适合你
  • BGP策略实验