我正在使用 Git 预提交挂钩来检查提交。 预提交脚本基本上只做一件事:
exec git diff-index --check --cached HEAD --
它还做了一些其他事情,但它们与本次讨论无关。
问题是,我的存储库中有各种各样的文件,但并非所有文件都必须遵守“
git diff-index --check
”强制执行的检查。
如何排除/忽略这些文件? 也就是说,我确实在 git 中跟踪它们,但我只想在预提交检查中忽略它们。
例如,某个补丁包含*.c、*.h、*ini和*.xyz文件。 我希望“
git diff-index --check
”仅适用于 .c 和 .h 文件。
手册页显示:
当存在
换句话说,“路径”参数实际上是全局样式的模式,而不仅仅是特定的路径。 您只需将
'*.c' '*.h'
添加到您的命令中即可。
接受的答案正确处理了文件扩展名的排除。 要排除目录中的文件,您可以使用以下命令。
git diff-index --check --cached HEAD -- ':!directory'