Git预推钩不';I don’我好像没有在用git push

Git预推钩不';I don’我好像没有在用git push,git,githooks,Git,Githooks,我在我的测试分支上: $git branch master * testbranch 这是我在.git/hooks/pre-push文件中的代码: #!/bin/bash protected_branch='testbranch' current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $protected_branch = $current_branch ] then

我在我的测试分支上:

$git branch
  master
* testbranch
这是我在
.git/hooks/pre-push
文件中的代码:

#!/bin/bash
protected_branch='testbranch'
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')

if [ $protected_branch = $current_branch ]
    then
            echo "Test"
            pwdlsfail

            rc=$?
            if [[ $rc != 0 ]] ; then
                echo "test failed - push denied. Run tests locally and confirm they pass before pushing"
                exit $rc
            fi
else
# Everything went OK so we can exit with a zero
    exit 0
fi
尝试将上述代码作为shell脚本运行,效果良好:

$./1.sh  
Test
./1.sh: line 8: pwdlsfail: command not found
test failed on rev  - push denied. Run tests locally and confirm they pass before pushing

但是
pre-push
hook仍然没有被调用
git-push-origin-testbranch
,我是不是遗漏了什么?

从您的描述中可以看出,您试图将
pre-receive
hook放入本地存储库。这不是它的工作原理,
pre-receive
hook应该在你的遥控器上。如果要在推送之前在本地运行某些内容,请使用
pre-push
hook


中还列出了其他几个钩子,您可能会发现它们也很有用。

如果我希望在本地使用它,则将pre-receive重命名为pre-push是否有效?如果您在脚本中尝试执行的任何操作在该上下文中都有意义,则可以。我将pre-receive改为pre-push,但这也不起作用。我遗漏了什么吗?
pre-push
commit钩子与
pre-receive
钩子不接受相同的参数或输入,因此您显示的钩子不起作用。您需要修改它以使其行为不同。让我找出一个预推钩子的示例来做完全相同的事情,然后回到这个问题上。谢谢