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

问题描述 投票:0回答:2

我正在使用 Git 预提交挂钩来检查提交。 预提交脚本基本上只做一件事:

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

它还做了一些其他事情,但它们与本次讨论无关。

问题是,我的存储库中有各种各样的文件,但并非所有文件都必须遵守“

git diff-index --check
”强制执行的检查。

如何排除/忽略这些文件? 也就是说,我确实在 git 中跟踪它们,但我只想在预提交检查中忽略它们。

例如,某个补丁包含*.c、*.h、*ini和*.xyz文件。 我希望“

git diff-index --check
”仅适用于 .c 和 .h 文件。

git
2个回答
8
投票

手册页显示:

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

换句话说,“路径”参数实际上是全局样式的模式,而不仅仅是特定的路径。 您只需将

'*.c' '*.h'
添加到您的命令中即可。


2
投票

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

git diff-index --check --cached HEAD -- ':!directory'
© www.soinside.com 2019 - 2024. All rights reserved.