如何将Git Hook推送到服务器

问题描述

我为“ commit-msg ”创建了一个自定义的Git Hook,它说我应该为提交消息添加特定的文本,我希望这个钩可以集中到我的git repo中,因此克隆克隆存储库的人都应该在本地找到这个钩子。

enter image description here

我无法将此钩子作为git add / commit / push命令的一部分进行推送,有人可以让我知道是否可以添加钩子吗?如何将git hook推送到远程仓库?

谢谢, 阿比舍克

解决方法

TL; DR:钩子不是存储库的一部分,因此不能被推入/拉出

您可能知道,客户端和服务器端钩子之间是有区别的。

客户端挂钩在客户端上运行,并在每个客户端上配置。

如果能够推送它们,则在git中将有一个安全漏洞,就像每个客户端执行git操作时一样。

您可以改为将钩子保存在存储库中的某个位置(已签入),并创建一个将钩子复制到.git/hooks目录中的脚本。

然后您可以在贡献者指南或自述文件中告诉贡献者在克隆存储库时运行该脚本。

您还可以告诉您的用户在存储库中运行以下命令,以便在所需目录中执行挂钩:

git config core.hooksPath <your hooks directory>

如果要创建服务器端挂钩,则需要手动将挂钩上传到服务器。

像GitHub这样的服务器不允许创建自定义的服务器端挂钩,但是可以配置受保护的分支之类的东西。