如何让git diff --stat支持diff.<driver>.textconv文本转换过滤器?
Git textconv过滤器与统计参数(--stat/--numstat)行数不一致问题
问题原因
Git 默认情况下,--stat、--numstat这类统计参数会直接读取仓库中存储的原始未转换文件内容计算行数差异,不会经过你配置的textconv过滤器处理,这就导致统计结果和转换后补丁显示的实际行数完全不符。
解决方案
1. 临时生效:执行命令时添加--textconv参数
直接在diff统计命令后加上--textconv,强制Git基于转换后的文件内容计算统计数值:
# 带补丁的统计 git diff --patch-with-stat --textconv # 仅数字统计 git diff --numstat --textconv
执行后统计行数会和补丁里显示的转换后内容行数完全一致。
2. 永久生效:配置命令别名
如果需要频繁使用这个功能,可以给Git配置别名,避免每次手动输入参数:
git config --global alias.diffstat 'diff --textconv --stat' git config --global alias.diffnumstat 'diff --textconv --numstat'
之后直接使用git diffstat或git diffnumstat就能得到转换后的统计结果。
注意事项
--textconv参数要求Git版本在1.7.2及以上,若你的Git版本过旧,建议先升级到新版本。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

