我在与GitLab存储库相同的服务器上有一个本地Git存储库。我可以拉,但不能推。由于我在同一台服务器上,因此我没有使用SSH密钥。看看GitLab的钩子标签,没有显示任何内容(请注意,我从未使用过钩子,并且真的不知道它们的用途)。这是如何解决的?谢谢
[root@vps bidjunction]# git remote -v
origin /home/git/repositories/root/bidjunction.git (fetch)
origin /home/git/repositories/root/bidjunction.git (push)
[root@vps bidjunction]# git push origin master
Counting objects: 25, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 2.31 KiB | 0 bytes/s, done.
Total 14 (delta 11), reused 0 (delta 0)
remote: GitLab: You are not allowed to access master!
remote: error: hook declined to update refs/heads/master
To /home/git/repositories/root/bidjunction.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to '/home/git/repositories/root/bidjunction.git'
[root@vps bidjunction]#
答案 0 :(得分:0)
它可能取决于使用的GitLab版本:
在GitLab 6.7.x之后,该钩子似乎被错误激活:见issue 6810。
升级后,推送到所有repos开始被拒绝,并显示以下错误消息:
remote: GitLab: You are not allowed to access master!
remote: error: hook declined to update refs/heads/master
降级回6.6.5(以及GitLab Shell 1.8.0)解决了这个问题。
请注意,它还提到:
解决方法是更新gitlab.yml的ldap部分,将所有当前用单引号括起来的值换成双引号。
似乎只有那些使用LDAP进行身份验证的人才会受到影响。
也可能是因为master
分支受到保护,如issue 6968中所述:
如果我将
master
设为受保护的分支机构,即使我是项目的所有者,也无法推送它(请参阅下面的错误)。
如果我取消保护master
,那么我的推送能力又回来了。我在GitLab 6.8.2。