Git 为什么我的预提交钩子在我提交时不运行
我的Github存储库中有下面的代码,我想阻止我的回购协议中的任何人直接提交给master,但它不起作用,怎么了,我错了 我已经在stack overflow和youtube上搜索过,试图找到关于这个问题的教程,但我没有任何运气Git 为什么我的预提交钩子在我提交时不运行,git,github,Git,Github,我的Github存储库中有下面的代码,我想阻止我的回购协议中的任何人直接提交给master,但它不起作用,怎么了,我错了 我已经在stack overflow和youtube上搜索过,试图找到关于这个问题的教程,但我没有任何运气 9 lines (6 sloc) 154 Bytes #!/bin/sh branch="$(git rev-parse --abbrev-ref HEAD)" if [ "$branch" = "master" ]; then echo "You can'
9 lines (6 sloc) 154 Bytes
#!/bin/sh
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "master" ]; then
echo "You can't commit directly to master branch"
exit 1
fi
我希望阻止用户直接提交给master
目前,他们能够提交给master
我的脚本肯定是可以执行的,但它仍然没有显示任何内容。如果这样一个钩子是本地执行的,请确保你的钩子在
预提交的文件中.git/hooks
它将适用于此特定回购协议,但应在您希望其有效的每个相关回购协议中引入
除了钩子之外,您可能还希望使用分支保护规则配置github,这样即使有人在本地提交master,他们也无法将这些提交推送到github。您甚至可以将其配置为需要一个pull请求才能将提交提交到master上。这比您的本地钩子更重要,因为这不是每个团队成员都可以选择的。您是否设置了可执行标志?我们是否确定您的文件名为pre-commit
(无扩展名)并且位于目录.git/hooks
?因此您的文件位于钩子
,而不是.git/hooks
。这就是你的问题。@SergioTulentsev是正确的,位置就是问题所在。为了避免您的下一个问题,不,没有简单的方法可以与所有团队成员共享这些钩子,他们每个人都必须将该钩子放入他们的.git/hooks
文件夹中。您可以编写一个脚本将其放在那里,但每个团队成员都必须执行该脚本。除了挂钩之外,您可能还希望使用分支保护规则配置github,以便即使有人在本地主机上提交,他们也无法将这些提交推送到github。您甚至可以将其配置为需要一个pull请求才能将提交提交到master上。这比你的本地钩子更重要,因为这不是每个团队成员都可以选择的。