在实际工作中,通过git diff来计算代码变更数量,有碰到的需求是,仅仅统计某些类型的文件(带有特殊后缀名/扩展名的文件),比如:仅仅统计当前git repo中的.java、.xml、.c、.cpp这样的文件的该变量。可以有如下两种方法实现让Git根据文件后缀名来统计,而且统计其中各个子目录中的符合条件的文件。
1. 直接使用'*.java'、'*.xml'这样即可,前提是,你的git版本比较新(如:Git >= 1.7.8 之后的版本)
1 2 3 4 5 6 |
jay@jay-linux:~/aew-backend.git$ git --version git version 1.7.9.5 jay@jay-linux:~/aew-backend.git$ ls bug config.py lib mysql README.md repo shell jay@jay-linux:~/aew-backend.git$ git diff --shortstat e5ffef25 26c8d317 -- '*.py' '*.xml' 4 files changed, 61 insertions(+), 15 deletions(-) |
2. 是用Bash 4.0 开始提供的globstar选项,通过 **/*.py 这样来匹配该目录及其所有子目录中以.py结尾的所有文件,这种方法对Git版本没有特别的要求,不管你的Git是老版本还是新版本都可以的。关于globstar,请参考前面我写过的“使用Bash中的globstart选项”一文。
1 2 3 4 5 |
[repo@hostA aew-backend.git]$ git --version git version 1.7.1 [repo@hostA aew-backend.git]$ shopt -s globstar [repo@hostA aew-backend.git]$ git diff --shortstat e5ffef25 26c8d317 -- **/*.py **/*.xml 4 files changed, 61 insertions(+), 15 deletions(-) |