尝试将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
答案 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可能对哪些角色需要保护有不同的想法。