$OutputEncoding=[System.Text.Encoding]::UTF8[Console]::OutputEncoding=[System.Text.Encoding]::UTF8 # 设置统计时间范围和输出文件 $sinceDate="2025-01-01"$untilDate="2026-01-01"$outputFile="git_contributor_report_2025.md"# 步骤1:获取时间范围内的所有不重复作者 $authors=git log--since=$sinceDate--until=$untilDate--pretty=format:"%an"|Sort-Object-Unique# 步骤2:初始化一个哈希表来存储每个人的统计 $contributions=@{}# 步骤3:遍历每个作者,计算其变更行数 foreach($author in $authors){# 初始化该作者的计数器 $totalAdd=0$totalDel=0# 获取该作者的提交行数统计 $stats=git log--since=$sinceDate--until=$untilDate--author=$author--pretty=tformat:""--numstat # 处理numstat输出,累加行数 $stats|ForEach-Object{if($_-match"^(\d+)\s+(\d+)\s+"){$totalAdd+=[int]$matches[1]$totalDel+=[int]$matches[2]}}# 存储到哈希表 $contributions[$author]=@{'Add'=$totalAdd'Del'=$totalDel'Net'=$totalAdd-$totalDel}}# 步骤4:将统计结果写入Markdown格式的报表文件"# Git 代码贡献统计报告"|Out-File-EncodingUTF8 $outputFile"**统计周期:** $sinceDate 至 $untilDate"|Add-Content-EncodingUTF8 $outputFile"**生成时间:** $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')"|Add-Content-EncodingUTF8 $outputFile""|Add-Content-EncodingUTF8 $outputFile # 表格标题"| 作者 | 新增行数 | 删除行数 | 净变更行数 |"|Add-Content-EncodingUTF8 $outputFile"| :--- | :---: | :---: | :---: |"|Add-Content-EncodingUTF8 $outputFile # 按净变更行数降序排列并输出 $contributions.GetEnumerator()|Sort-Object-PropertyValue.Net-Descending|ForEach-Object{$author=$_.Key $stats=$_.Value"| $author | $($stats.Add) | $($stats.Del) | $($stats.Net) |"|Add-Content-EncodingUTF8 $outputFile}# 步骤5:输出总计""|Add-Content-EncodingUTF8 $outputFile"## 总计"|Add-Content-EncodingUTF8 $outputFile $totalAddAll=($contributions.Values|Measure-Object-PropertyAdd-Sum).Sum $totalDelAll=($contributions.Values|Measure-Object-PropertyDel-Sum).Sum $totalNetAll=$totalAddAll-$totalDelAll"**所有作者合计:** 新增 $totalAddAll 行,删除 $totalDelAll 行,净变更 $totalNetAll 行。"|Add-Content-EncodingUTF8 $outputFileWrite-Host"✅ 报告已生成: $outputFile"-ForegroundColorGreen直接在idea中执行