git diff --stat排除某些文件

时间:2016-10-08 11:25:32

标签: git git-diff

尝试将Want to exclude file from "git diff"的答案调整为--stat标志并失败 - accepted answer(创建驱动程序)似乎只是unix(重定向到/ bin / true,无论这意味着什么)加上它创建一个驱动程序并将其永久分配给文件类型,而我正在寻找一个开关暂时禁用文件的差异(或者更确切地说是某些文件)。

脚本solution

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`

实际上调用git状态并编辑其​​输出 - 而我想要的是指示git diff本身在计算(简单)--stat(仅更改行)时忽略一些文件。我浏览了git-diff个文档,但似乎无法找到这样的选项。有人帮我一把吗?

$ git --version
git version 2.6.1.windows.1

1 个答案:

答案 0 :(得分:30)

Making 'git log' ignore changes for certain paths中描述的排除路径规则技巧在此处起作用:

git diff --status -- . ':(exclude)file/to/exclude.txt'

或者,如果您在子目录中:

git diff --status -- :/ ':(exclude,top)file/to/exclude.txt'

后者可以用各种方式拼写。例如,这也有效:

git diff --status ':(top)' :!/file/to/exclude.txt

同样如下:

git diff --status :/: :!/:file/to/exclude.txt

这些在&{34; pathspec"中的the gitglossary documentation中有所描述。部分。请注意,排除功能是Git版本1.9中的新功能(稍微破解到1.9.2)。前导/top的别名,!exclude的别名,长格式需要括号。在使用单字符别名时,实际路径名之前的尾随冒号是可选的,但在使用括号时禁止使用(这条规则每次都会让我感到厌烦 - 我一直希望使用:(exclude):...而不是:(exclude)...)。上面(top)(exclude) pathspec组件的单引号是为了保护括号不被(Unix / Linux)shell解释; Windows shell可能对哪些角色需要保护有不同的想法。