我正在使用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文件。
答案 0 :(得分:6)
手册页说:
当< path>存在参数,仅比较与这些模式匹配的路径。否则,将比较所有跟踪的文件。
换句话说,“path”参数实际上是glob样式的模式,而不仅仅是特定的路径。您只需在命令中添加'*.c' '*.h'
即可。
答案 1 :(得分:1)
接受的答案正确地处理了文件扩展名的排除。要排除驻留在目录中的文件,您可以使用以下命令。
git diff-index --check --cached HEAD -- ':!directory'