git diff 可以显示工作目录与索引区文件之间的差异,我们也可以用 Git-diff 根据文件扩展名来统计某些类型的文件,现在我们就来看看 Git-diff 根据文件扩展名来查看diff信息的方法.
在实际工作中,通过git diff来计算代码变更数量,有碰到的需求是,仅仅统计某些类型的文件,带有特殊后缀名/扩展名的文件,比如:仅仅统计当前git repo中的.java、.xml、.c、.cpp这样的文件的该变量,可以有如下两种方法实现让Git根据文件后缀名来统计,而且统计其中各个子目录中的符合条件的文件.
1.直接使用’*.java’、’*.xml’这样即可,前提是,你的git版本比较新,如:Git >= 1.7.8 之后的版本,代码如下:
- jay@jay-linux:~/aew-backend.git$git--version
- gitversion1.7.9.5
- jay@jay-linux:~/aew-backend.git$ls
- bugconfig.pylibmysqlREADME.mdreposhell
- jay@jay-linux:~/aew-backend.git$gitdiff--shortstate5ffef2526c8d317--'*.py''*.xml'
- 4fileschanged,61insertions(+),15deletions(-)
2.是用Bash 4.0 开始提供的globstar选项,通过 **/*.py 这样来匹配该目录及其所有子目录中以.py结尾的所有文件,这种方法对Git版本没有特别的要求,不管你的Git是老版本还是新版本都可以的,关于globstar,请参考前面我写过的“使用Bash中的globstart选项”一文,代码如下:
- [repo@hostAaew-backend.git]$git--version
- gitversion1.7.1
- [repo@hostAaew-backend.git]$shopt-sglobstar
- [repo@hostAaew-backend.git]$gitdiff--shortstate5ffef2526c8d317--**/*.py**/*.xml--phpfensi.com
- 4fileschanged,61insertions(+),15deletions(-)