如何排除“git diff-index”中的文件

时间:2013-10-08 15:16:22

标签: git

我正在使用git pre-commit钩子来检查提交。 预提交脚本基本上做了一件事:

exec git diff-index --check --cached HEAD --

它也做了一些其他事情,但它们与此讨论无关。

问题是,我在存储库中有各种各样的文件,而且并非所有文件都必须遵守“git diff-index --check”强制执行的检查。

所以我的问题是:如何排除/忽略这些文件? 也就是说,我在git中跟踪它们,但我想在预提交检查中忽略它们。

例如,某个补丁包含* .c,*。h,* ini和* .xyz文件。 我希望“git diff-index --check”仅适用于.c和.h文件。

2 个答案:

答案 0 :(得分:6)

手册页说:

当< path>存在参数,仅比较与这些模式匹配的路径。否则,将比较所有跟踪的文件。

换句话说,“path”参数实际上是glob样式的模式,而不仅仅是特定的路径。您只需在命令中添加'*.c' '*.h'即可。

答案 1 :(得分:1)

接受的答案正确地处理了文件扩展名的排除。要排除驻留在目录中的文件,您可以使用以下命令。

git diff-index --check --cached HEAD -- ':!directory'