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

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

  • 引言
  • 应用场景一:统计项目整体提交次数
  • 应用场景二:按开发者统计提交数量
  • 应用场景三:统计每日/每周提交活动
  • 应用场景四:统计单个文件或目录的修改频率
  • 应用场景五:按照commitId查看提交历史
  • 应用场景六:查看某一用户在两个指定的日期之间的提交记录
  • 应用场景七:按日期统计代码行数命令
  • 应用场景八:查询某个用户某段时间的提交总数
  • 结语

引言

        在现代软件开发中,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等工具进一步定制复杂的统计逻辑,满足更多个性化的统计需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错题记录-华为海思

华为 海思数字芯片 参考 &#xff1a;FPGA开发/数字IC笔试系列(5) 华为海思IC笔试解析 FPGA开发/数字IC笔试系列(6) 华为海思IC笔试解析 SystemVerilog Function与Task的区别 $readmemh与$readmemb这两个系统任务是用来从指定文件中读取数据到寄存器数组或者RAM、ROM中。除了…

IP地址修改步骤详解

IP地址是网络设备在网络中的标识&#xff0c;它决定了设备在网络中的位置与可访问性。然而&#xff0c;在某些情况下&#xff0c;我们可能需要修改IP地址&#xff0c;以满足特定的网络需求或解决网络问题。虎观代理将详细介绍IP地址的修改步骤&#xff0c;帮助读者更好地理解和…

HarmonyOS4-学习入门知识总结

简单的组件学习&#xff1a; /*** weip 自定义控件* 自定义构建函数也是需要充电的地方&#xff0c;分全局和局部的* 全局&#xff1a;需要添加function关键字 局部&#xff1a;不加function关键字* Styles function 自定义公共样式 分全局和局部* Extends(Text) 继承模式 只…

langchain 加载 csv,json

csv from langchain_community.document_loaders.csv_loader import CSVLoaderloader CSVLoader(file_pathdata/专业描述.csv, csv_args{delimiter: ,,quotechar: ",fieldnames: [专业, 描述] }, encodingutf8, source_column专业)data loader.load() print(data)quote…

150个 HTML5 网站模版 量大慢选

HTML5 网站模版 No.1 HTML5 网站模版 No.1

计算机网络之同轴电缆,集线器,网桥,交换机,路由器

ping的过程 两台主机用交叉线连接&#xff0c;通过88.2ping88.3发现底层是先经过广播&#xff0c;通过arp协议&#xff0c;告诉我要找的ip是88.3,然后88.3主机收到后就把自己的mac地址发送回去&#xff0c;同理88.2发现是发给自己的后就进行接收&#xff0c;有了mac地址然后再通…

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别分类效果基…

ASM 中的栈模型

Label 介绍 在 ASM 中&#xff0c;每一个 Label 必须对应一个 Frame&#xff0c;两个 Label 可以共享一个 Frame&#xff0c;可以理解为将两个 Label 合并了&#xff0c;而一个 Frame 只对应一个 Label&#xff0c;就是创建它的 Label。每一次定义一个方法&#xff0c;即执行 …

字体体积压缩

环境:python3 关键步骤: pip install fontTools目录详情: 执行 pyftsubset.exe SourceHanSansCN-Medium.ttf --text-file3500.txt然后打开:TTF To Woff2,选择文件上传,等待处理,下载,使用 附常用汉字,字体文件请善用百度 3500.txt 工才下寸丈大与万上小口山巾千乞川亿个…

【C++算法竞赛 · 图论】图的存储

前言 图的存储 邻接矩阵 方法 复杂度 应用 例题 题解 邻接表 方法 复杂度 应用 前言 上一篇文章中&#xff08;【C算法竞赛 图论】图论基础&#xff09;&#xff0c;介绍了图论相关的概念和一种图的存储的方法&#xff0c;这篇文章将会介绍剩下的两种方法&#xff…

大模型之一:大语言模型预训练的过程

介绍 大语言模型的一般训练过程&#xff08;3步&#xff09;&#xff1a;1、预训练学知识&#xff0c;2、指令微调学格式&#xff0c;3、强化学习对齐人类偏好 预训练 所以要想大模型有领域知识&#xff0c;得增量预训练&#xff08;靠指令微调记知识不靠谱&#xff0c;不是…

【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库)&#xff0c;用户可以通过搜索关键字来进行查询关联度最高的News&#xff0c;实现对文本的搜索引擎&#xff1a; 1. 导入数据集 from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…

zookeeper和kafka消息队列

zookeeper zookeeper介绍 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 zookeeper特点 zookeeper是由一个领导者(leader)&#xff0c;多个跟随者(follower)组成的集群 Zookeepe集群中只要有半数以上节点存活&#xff0c;Zookeeper集群…

使用Postman发送跨域请求实验

使用Postman发送跨域请求 1 跨域是什么&#xff1f;2 何为同源呢?3 跨域请求是如何被检测到的&#xff1f;4 Postman跨域请求测试4.1 后端准备4.2 测试用例4.2.1 后端未配置跨域请求(1) 前端不跨域&#xff08;2&#xff09;前端跨域 4.2.2 后端配置跨域信息&#xff08;1&…

数据结构-链表刷题集(长期更新)

文章目录 1. leetcode 2 两数之和1.1 解法一 1. leetcode 2 两数之和 1.1 解法一 题目及其相关实例如下 要做这个题,首先我们要学会模拟竖式的加法,我们知道即使是java基本数据中最大的long类型范围也是有限的,那如果超出范围了我们该怎么办呢,我们就需要用字符串来模拟这个…

Mac 下 Python+Selenium 自动上传西瓜视频

背景 研究下 PythonSelenium 自动化测试框架&#xff0c;简单实现 Mac 下自动化批量上传视频西瓜视频并发布&#xff0c;分享给需要的同学&#xff08;未做过多的异常处理&#xff09;。 脚本实现 首先通过手工手机号登录&#xff0c;保存西瓜视频网站的 cookie 文件 之后加载…

HTML的文档说明

1.告诉浏览器当前网页的版本 2.写法&#xff1a; &#xff01;以前的写法&#xff1a;要依据网页的HTML的版本去确定&#xff0c;紫萼发油很多很多。 具体的写法可以参考&#xff1a;W3C官网的文档说明 &#xff01;新写法&#xff1a;W3C都推荐用h5的写法 <DOCTYPE ht…

C语言CRC通用模块代码

我这几天看了下CRC具体校验原理&#xff0c;我看网上都没有一个通用的CRC库&#xff0c;都是一个函数写一种校验方式的那种&#xff0c;以下代码是随手写的一个通用的CRC软件模块&#xff0c; 支持最小单位字节的输入&#xff0c;有问题大家一起讨论。移植时需要修改的点可能是…

【蓝桥杯】第十五届蓝桥杯大赛软件赛省赛(Java研究生组)个人解题思路及代码分享

文章目录 试题A&#xff1a;劲舞团试题B&#xff1a;召唤数字精灵试题C&#xff1a;封闭图形的个数试题D&#xff1a;商品库存管理试题E&#xff1a;砍柴试题F&#xff1a;回文字符串试题G&#xff1a;最大异或节点试题H&#xff1a;植物生命力 试题A&#xff1a;劲舞团 【问题…

napi系列学习高阶篇——通过IDE集成C/C++三方库并开发napi接口

简介 应用在调用系统固件集成的C/C三方库时&#xff0c;可能会由于系统固件集成端与IDE的NDK中libc版本不一致导致调用失败&#xff0c;而且系统固件集成的C/C三方库对于应用的调式也很不友好&#xff0c;需要多方编译调试&#xff0c;很不方便。因此本文将通过在IDE上适配ope…