我需要使用git-log
命令在两个日期之间平均创建一个提交添加和删除行数的报告。
目前我使用的命令是:
git log --since="2015-12-01" --until="2015-12-31" --shortstat
但是我需要在过程中过滤一些文件。
Thoses文件是自动生成的,我们不希望看到它们的影响。他们可以通过名称*.generated.*
我选择使用git-log
命令,我能够获得所需的报告,但我没有看到如何过滤这些不需要的文件。
The doc is big,我已经多次阅读过,但我没有看到任何基于名称过滤文件的内容。这是可能的,还是我必须找到另一个命令来查找提交添加/删除的行数?
答案 0 :(得分:9)
"秘密"如何做到这一点被称为:
pathspec magic
强> 你可以简单地使用这种格式(在git版本> 1.9中引入):
# Use this syntax, pay attention to all the parameters and the syntax
# Unix:
git log <any required flags> -p -- . ':(exclude)*.generated.*'
# Windows (double quote) [ Thank to @Cyril Gandon for noticing it]:
# (double quote) should work on all OS as well
git log <any required flags> -p -- . ":(exclude)*.generated.*"
此语法称为 pathspec magic
使用这种语法,你可以告诉&#34; git要排除的文件扩展名。在您的情况下,它是 *.generated.*
<强> http://git-scm.com/docs/gitglossary.html
强>:
以冒号
:
开头的 pathspec 具有特殊含义。在简短形式中,前导冒号
:
后跟零个或多个magic signature
个字母(可选地由另一个冒号:)终止,其余部分是与路径匹配的模式。
magic signature
由ASCII符号组成,既不是字母数字,也不是字母,正则表达式,也不是冒号。如果模式以不属于&#34;魔术签名&#34;的字符开头,则可以省略终止magic signature
的可选冒号。符号集,不是冒号。在长格式中,前导冒号
:
后跟一个左括号(以逗号分隔的零个或多个magic words
的列表 strong>,和一个紧密的括号),余数是与路径匹配的模式。
<强> 注意 强>
在旧版本中(该功能是在git v1.9中引入的,并且该bug已在git 1.9.5中修复),有一个错误已修复。
https://github.com/git/git/commit/ed22b4173bd8d6dbce6236480bd30a63dd54834e
git log --stat
强> 和文件管理器一样 - 你可以看到结果中只有一个文件而不是2个
git log --stat -p -- . ':(exclude)*dal.js*'
强>