1

免责声明:是的,我已经阅读了Skip Git 提交挂钩并且我知道该-n标志,但这不是我想要的。


我有一个预先提交的钩子,它运行是为了做一些代码美化(用空格替换制表符,删除双空行,......)。

但是,在某些用例中我不希望钩子运行:例如,当我签入一些 Makefile 时,我不能简单地将制表符替换为空格,因此我必须跳过这些文件。

如果我是唯一的开发人员,我会使用-nflag 以防止 hook 运行,但是还有其他人使用不知道-nflag 的 UI(咳嗽tortoisegit),他们不会愿意指定一些标志到commit.

除了直接在钩子中实现跳过和明显的-n方式:还有其他方法可以防止预提交钩子运行吗?

4

1 回答 1

3

按照与此 pre-commit hook类似的想法,您可以使用:

git diff --cached --name-only

这将列出即将提交的文件,然后您可以过滤它们以应用您的控件或跳过这些文件。

换句话说,钩子仍然在每次提交时运行,对于每个文件。
但它的脚本足够聪明,可以将其测试应用于要提交的文件列表中的正确文件。

于 2014-03-31T13:43:56.090 回答