git diff --stat 排除某些文件

git diff --stat exclude certain files

尝试改编来自 Want to exclude file from "git diff" for the --stat flag and failing - the accepted answer 的答案(创建驱动程序)似乎仅适用于 unix(重定向到 /bin/true,无论这意味着什么)加上它创建驱动程序并将其分配给文件类型永久地,当我正在寻找一个开关来暂时禁用文件(或更确切地说某些文件)的差异时。

脚本 solution:

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

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

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

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

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

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

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

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

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

一样:

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

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