Git如何查看提交行数与删除行数:统计代码贡献量的完整指南

Git如何查看提交行数与删除行数:统计代码贡献量的完整指南

在软件开发中,代码行数统计是衡量团队协作效率和项目进度的重要指标。通过Git的命令行工具,开发者可以轻松查看提交的代码行数删除的代码行数以及净增行数。本文将详细介绍多种方法,并结合实际案例,帮助你快速掌握这一技能。


一、为什么需要统计代码行数?

  1. 评估工作量:统计个人或团队的代码贡献量,辅助绩效考核。
  2. 分析代码质量:通过删除行数判断重构频率,评估代码优化效果。
  3. 项目管理:监控项目整体进度,识别高频修改的模块。

二、基础命令:查看个人提交的行数

1. 统计今日提交的代码量

若想查看今天某个开发者(如xiaoming)的代码贡献,可使用以下命令:

git log --author="xiaoming" --since=midnight --pretty=tformat: --numstat
  • --author="xiaoming":指定提交者。
  • --since=midnight:仅统计从今日零点后的提交。
  • --numstat:输出每次提交的新增行数(第一列)和删除行数(第二列)。

示例输出

20    5    path/to/file1
10    2    path/to/file2
  • 第一列:新增行数。
  • 第二列:删除行数。
  • 第三列:文件路径。

2. 汇总统计总行数

通过管道符结合awk,可以自动计算总行数:

git log --author="xiaoming" --since=midnight --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增行数:%s,删除行数:%s,净增行数:%s\n", add, subs, add-subs }'

输出示例

新增行数:30,删除行数:7,净增行数:23

三、按时间范围统计代码量

1. 指定时间段统计

统计某段时间内的代码贡献,例如2024年1月1日至2025年6月12日:

git log --author="xiaoming" --since="2024-01-01" --until="2025-06-12" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增行数:%s,删除行数:%s,净增行数:%s\n", add, subs, add-subs }'

2. 统计所有分支的代码量

若需包含所有分支,添加--all参数:

git log --all --author="xiaoming" --since="2024-01-01" --until="2025-06-12" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增行数:%s,删除行数:%s,净增行数:%s\n", add, subs, add-subs }'

四、查看所有提交者的贡献排名

1. 列出所有提交者

git log --format='%aN' | sort -u

2. 统计每位提交者的代码量

git log --format='%aN' | sort -u | while read name; doecho -en "$name\t"git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增:%s,删除:%s\n", add, subs }'
done

输出示例

xiaoming    新增:1500,删除:300
lily        新增:800,删除:150

五、高级技巧:图形化工具与自动化

1. 使用GitHub/GitLab内置统计

  • GitHub:在仓库主页点击“Insights” → “Contributors”,可查看每位贡献者的提交行数。
  • GitLab:在项目页面选择“Insights” → “Code”,查看代码量趋势图。

2. 集成到CI/CD流程

通过编写Shell脚本,将统计结果自动生成报告并推送至团队协作平台(如Slack、企业微信):

#!/bin/bash
# 统计今日提交行数并发送通知
RESULT=$(git log --author="xiaoming" --since=midnight --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增:%s,删除:%s", add, subs }')
curl -X POST -H 'Content-type: application/json' --data '{"text":"今日代码贡献:'"$RESULT"'"}' https://webhook-url

六、注意事项与常见问题

1. 环境兼容性

  • Windows用户:默认Git Bash可能缺少awk工具。可通过安装Git for Windows获取完整支持。
  • Linux/macOS:直接使用系统自带的awk即可。

2. 统计局限性

  • 代码质量:行数不代表代码质量,例如大量空行或冗余代码可能被误判。
  • 文件类型:默认统计所有文件,建议通过--参数指定特定扩展名(如-- "*.py")。

3. 性能优化

  • 大型仓库:使用--since--until缩小时间范围,避免全量扫描导致性能问题。

七、结语

通过Git的命令行工具,开发者可以灵活统计代码提交的行数与删除行数,为团队协作和项目管理提供数据支持。无论是日常开发中的快速检查,还是项目复盘时的深度分析,这些技巧都能显著提升工作效率。掌握这些命令后,你不仅能更高效地管理自己的代码贡献,还能帮助团队实现更科学的开发流程。

立即尝试:在终端中运行以下命令,查看你今天的代码贡献!

git log --author="$(git config user.name)" --since=midnight --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "新增:%s,删除:%s\n", add, subs }'

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

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

相关文章

DVWA靶场通关笔记-SQL注入(SQL Injection Impossible级别)

目录 一、源码分析 1、index.php 2、impossible.php 二、SQL注入防范分析 1、Anti-CSRF 令牌 2、参数化查询 3、输入验证 本系列为通过《DVWA靶场通关笔记》的SQL Injection 关卡(low,medium,high,impossible共4关)渗透集合…

MySQL中事务的作用和定义

在 MySQL 中,​​事务(Transaction)​​ 是一组数据库操作的逻辑单元,这些操作要么​​全部成功执行​​,要么​​全部失败回滚​​,以确保数据库从一个一致状态转换到另一个一致状态。事务是关系型数据库&…

华为Fit4:腕间助手,守护你的健康,带你开启智慧生活

清晨被闹钟吵醒,想要关掉却怎么也找不到手机?经常睡很久却还是很困?重要的事情常常因为没有被记录和规划清楚最终变得手忙脚乱?人流拥挤的地铁上半天找不到刷码信息?这些问题是不是生活中常常遇到,别担心&a…

【交易系统系列36】揭秘币安(Binance)技术心脏:从公开信息拼凑“MatchBox”撮合引擎架构

一、 核心概览:从白皮书的豪言到监管文件的“实锤” 要理解币安的架构,我们首先要抓住几个关键的、有据可查的事实: 性能目标:在其早期白皮书中,币安宣称其撮合引擎能够达到每秒140万笔订单的处理能力。这串数字,无论是在当时还是现在,都代表着对系统吞吐量和低延迟的极…

SpringBoot08-Spring Boot 多环境配置

方式一:纯 Spring Profile(最常用,官方推荐)思路:用 application-{profile}.yml 切分配置,运行时指定用哪个 profile。 如何做:src/main/resources/application.ymlapplication-dev.ymlapplicat…

苍穹外卖项目笔记day04--Redis入门

Redis 概念 Redis 是一个开源的、高性能的键值存储系统,常被归类为NoSQL数据库。它支持多种数据结构,如字符串、列表、哈希、集合和有序集合,适用于缓存、消息队列、实时分析等多种场景。Redis是一个基于内存的key-value结构数据库。Redis …

OpenCV 图像处理实战与命令行参数配置:从轮廓检测到模板匹配

在计算机视觉领域,OpenCV 是一款功能强大且应用广泛的开源库,它提供了丰富的 API,支持图像读取、预处理、特征检测等多种操作。本文将结合实际代码案例,详细讲解如何使用 OpenCV 实现轮廓检测、轮廓近似、模板匹配等常用功能&…

深度学习---pytorch卷积神经网络保存和使用最优模型

在深度学习模型训练过程中,如何提升模型性能、精准保存最优模型并实现高效推理,是每个开发者必须攻克的关键环节。本文结合实际项目经验与完整代码示例,详细拆解模型训练优化、最优模型保存与加载、图像预测全流程,帮助大家避开常…

FPGA实现Aurora 64B66B图像视频点对点传输,基于GTY高速收发器,提供2套工程源码和技术支持

目录 1、前言Aurora 64B66B是啥?官方有Example,为何要用你这个?工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本方案在Aurora 8B10B上的应用 3、工程详细设…

LeetCode 524.通过删除字母匹配到字典里最长单词

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。 示例…

kali_linux

【2024版】最新kali linux入门及常用简单工具介绍(非常详细)从零基础入门到精通,看完这一篇就够了-CSDN博客

MyBatis 常见错误与解决方案:从坑中爬出的实战指南

🔍 MyBatis 常见错误与解决方案:从坑中爬出的实战指南 文章目录🔍 MyBatis 常见错误与解决方案:从坑中爬出的实战指南🐛 一、N1 查询问题与性能优化💡 什么是 N1 查询问题?⚠️ 错误示例✅ 解决…

蓝牙modem端frequency offset compensation算法描述

蓝牙Modem中一个非常关键的算法:频偏估计与补偿(Frequency Offset Estimation and Compensation)。这个算法是接收机(解调端)能正确工作的基石。 我将为您详细解释这个算法的原理、必要性以及其工作流程。 一、核心问题:为什么需要频偏补偿? 频偏的来源: 如第一张图所…

基于STM32的居家养老健康安全检测系统

若该文为原创文章,转载请注明原文出处。一、 项目背景与立项意义社会老龄化趋势加剧:全球范围内,人口结构正经历着前所未有的老龄化转变。中国也不例外,正快速步入深度老龄化社会。随之而来的是庞大的独居、空巢老年人群体的健康监…

简易TCP网络程序

目录 1. TCP 和 UDP 的基本区别 2. TCP 中的 listen、accept 和 connect 3. UDP 中的区别:没有 listen、accept 和 connect 4. 总结对比: 2.字符串回响 2.1.核心功能 2.2 代码展示 1. server.hpp 服务器头文件 2. server.cpp 服务器源文件 3. …

广电手机卡到底好不好?

中国广电于2020年与中国移动签署了战略合作协议,双方在5G基站建设方面实现了共建共享。直到2022年下半年,中国广电才正式进入号卡服务领域,成为新晋运营商。虽然在三年的时间内其发展速度较快,但对于消费者而言,广电的…

Git中批量恢复文件到之前提交状态

<摘要> Git中批量恢复文件到之前提交状态的核心命令是git checkout、git reset和git restore。根据文件是否已暂存&#xff08;git add&#xff09;&#xff0c;需采用不同方案&#xff1a;未暂存变更用git checkout -- <file>或git restore <file>丢弃修改&…

UniApp 基础开发第一步:HBuilderX 安装与环境配置

UniApp 是一个基于 Vue.js 的跨平台开发框架&#xff0c;支持快速构建小程序、H5、App 等应用。作为开发的第一步&#xff0c;正确安装和配置 HBuilderX&#xff08;官方推荐的 IDE&#xff09;是至关重要的。下面我将以清晰步骤引导您完成整个过程&#xff0c;确保环境可用。整…

华为云Stack Deploy安装(VMware workstation物理部署)

1.1 华为云Stack Deploy安装(VMware workstation物理部署) 步骤 1 安装软件及环境准备 HUAWEI_CLOUD_Stack_Deploy_8.1.1-X86_64.iso HCSD安装镜像 VMware workstation软件 VirtualBox安装包 步骤2 修改VMware workstation网络模式 打开VMware workstation软件,点“编辑”…

安全等保复习笔记

信息安全概述1.2 信息安全的脆弱性及常见安全攻击 • 网络环境的开放性物理层--物理攻击 • 物理设备破坏 ➢ 指攻击者直接破坏网络的各种物理设施&#xff0c;比如服务器设施&#xff0c;或者网络的传输通信设施等 ➢ 设备破坏攻击的目的主要是为了中断网络服务 • 物理设备窃…