You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何统计Git合并中新增/修改的代码行数(忽略删除行)

如何统计Git合并中新增/修改的代码行数(忽略删除行)

嘿,这个问题我之前在项目迭代里也碰到过!要统计Git合并操作里新增/修改的代码行数、同时忽略删除的内容,其实用Git自带的命令就能轻松搞定,不用额外装工具,我给你分享几个实用的方法:


1. 针对已完成的合并提交统计

如果已经完成了合并,想回溯统计这个合并提交带来的新增/修改行数,可以用下面的命令:

git diff <merge-commit-hash>^1 <merge-commit-hash> --diff-filter=AM --shortstat

给你拆解下参数:

  • <merge-commit-hash>:替换成你要统计的合并提交的哈希值,用git log就能查到(找带Merge标记的提交)
  • ^1:指合并提交的第一个父分支(通常是你合并进去的目标分支,比如main/master),如果要对比被合并的分支就用^2
  • --diff-filter=AM:只筛选**新增(Added)修改(Modified)**的文件,删除的文件会直接被排除
  • --shortstat:输出简洁的统计结果,比如10 files changed, 65 insertions(+),自动忽略删除行的统计

举个实际例子,假设合并提交的哈希是abc123,命令就是:

git diff abc123^1 abc123 --diff-filter=AM --shortstat

如果想要每个文件的详细行数统计(比如看单个文件新增了多少行),把--shortstat换成--numstat就行:

git diff abc123^1 abc123 --diff-filter=AM --numstat

输出会是类似这样的格式:

20      5       src/utils.js
15      0       src/new-feature.js

第一列是新增行数,第二列是删除行数(我们可以直接忽略第二列)。


2. 预览待合并分支的新增/修改行数

如果还没执行合并,想提前看看待合并分支会带来多少新增/修改代码,直接对比目标分支和待合并分支即可:

git diff main..feature-branch --diff-filter=AM --shortstat

这里main是你的目标分支,feature-branch是要合并的分支,替换成你实际的分支名就行。


3. 进阶:只统计新增总行数(忽略修改中的删除行)

如果想更精准地统计所有新增的行数(包括修改文件里的新增部分,完全忽略任何删除的行),可以用awk命令提取求和:

git diff <merge-commit-hash>^1 <merge-commit-hash> --diff-filter=AM --numstat | awk '{sum += $1} END {print "Total added/edited lines: " sum}'

这个命令会自动把所有新增行数加总,输出一个最终的数字。


小技巧:排除特定文件

如果不想统计配置文件、日志这类非业务代码,可以用:!排除指定文件:

git diff abc123^1 abc123 --diff-filter=AM --shortstat ':!*.json' ':!*.log'

上面的命令会排除所有.json.log文件的统计。

这些方法应该能完美解决你的需求啦,要是有其他细节问题随时问!

备注:内容来源于stack exchange,提问作者Nick

火山引擎 最新活动