首页/开发/Git 与协作速查/git diff --stat 差异摘要
Git 基础与命令88 条

git diff --stat 差异摘要

变更规模概览:--stat 输出每个文件的增删行数,--numstat/--name-only/--name-status 供脚本与评审流程使用。

Git 与协作速查开发更新于 2026-10-13

差异摘要是什么

git diff --stat 把改动压缩成每个文件一行:文件名、改动条数,以及一串用加号减号画出的比例条。它不展开具体内容,只回答「改了哪些文件、规模多大」。评审时先看摘要掌握全貌,再决定深入哪些文件,比从头读整份补丁高效。

几种机器可读的变体

需要脚本处理时,--numstat 用制表符分隔出新增与删除的行数,字段位置固定;--name-only 只给文件名;--name-status 每行给出状态字母与路径,能区分新增、修改、删除与重命名。三者都能配合提交范围或路径过滤一起使用。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git diff --stat [<提交>] [-- <路径>]
--stat图形化增删摘要
--numstat制表符分隔的机器可读格式
--name-status每行「状态字母加路径」
常见组合与 --staged、提交范围、路径过滤搭配

典型使用场景

  • 评审摸底:先看规模,再安排阅读顺序
  • 提交前确认:检查是否夹带了不相关的大文件改动
  • 脚本统计:用 --numstat 汇总改动行数
  • 生成清单:用 --name-only 或 --name-status 输出改动文件列表
  • 版本对比:比较两个标签之间的改动规模

常用示例

常用示例
git diff --stat                 # 未暂存改动的摘要
git diff --staged --stat        # 待提交改动的摘要
git diff --numstat              # 供脚本解析的行数统计
git diff --name-only            # 只列文件名
git diff --name-status HEAD~3   # 状态字母加路径
git diff --stat v1.4.0 v1.5.0   # 两个版本之间的规模

几种摘要格式

选项输出形态适用场合
--stat每文件一行加比例条人工阅读
--numstat制表符分隔的增删行数脚本统计
--name-only只列路径生成文件清单
--name-status状态字母加路径需要区分动作类型
评审时先看 --stat 掌握规模,再按文件重要度安排阅读顺序,比从头读完整补丁高效得多。
摘要只反映规模,不反映语义。删掉大量代码可能是重构,也可能是功能被摘除,判断之前仍然需要展开具体文件查看。
带提交范围的摘要很适合做发布清单:比较两个标签之间的差异,一眼就能看出这个版本动了多少文件、集中在哪些目录。

易错点

  • 纯重命名文件的增删计数可能为零,看摘要时要结合 --summary 确认是否发生重命名
  • --stat 的最后一行是汇总数字,写脚本解析时不要把它当成文件行
  • 摘要只反映规模不反映语义,大幅删除可能是重构而非功能变更
  • 改动规模大不代表风险高,配置与锁文件的巨大改动往往只是自动生成

数据来源与参考

  • Git 官方文档:git-diff(--stat/--numstat/--name-status)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌