【问题标题】:Gitlab push. You are not allowed to access masterGitlab 推送。您无权访问 master
【发布时间】:2014-05-31 17:19:11
【问题描述】:

我已经设置了自己的服务器(在家里),我通过我的主 PC 上的 putty 访问它。

Gitlab 已安装并配置完毕,我可以访问 gitlab 并登录。 但是当我尝试将文件(通过 HTTP)推送到我自己的项目时,我收到了这条消息:

POST git-receive-pack (381 bytes)
remote: GitLab: You are not allowed to access master![K
remote: error: hook declined to update refs/heads/master[K
To http://myserver.com/root/push2jump.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://myserver.com/root/push2jump.git'

我使用 HTTP 而不是 SSH,因为我得到“拒绝访问”,所以基本上两者都不起作用。

当我跑步时

sudo bundle exec rake gitlab:check RAILS_ENV=production

它告诉我 Sidekiq 脚本没有运行(我似乎无法修复,不确定是否与此问题有关) 当然它告诉我存储库是空的。其余的似乎都很好。

我检查了

.ssh/authorized_keys

这似乎也是正确的,那里的密钥与我保存的密钥相同。

我在 gitlab-shell/config.yml 中的 repos_path 看起来不错,没有使用符号链接:

repos_path: /home/git/repositories/

我已经运行了官方的 gitlab 安装指南。

谁能帮我解决这个问题? 提前致谢

更新

System information
System:         Ubuntu 12.04
Current User:   git
Using RVM:      no
Ruby Version:   2.0.0p481
Gem Version:    2.0.14
Bundler Version:1.6.2
Rake Version:   10.3.1
Sidekiq Version:2.17.0

GitLab information
Version:        6.9.2
Revision:       e46b644
Directory:      /home/git/gitlab
DB Adapter:     mysql2
URL:            ***
HTTP Clone URL: ***/some-project.git
SSH Clone URL:  ***:some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        1.9.4
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/
Git:            /usr/local/bin/git

【问题讨论】:

  • 看起来有点像github.com/gitlabhq/gitlabhq/issues/7025github.com/gitlabhq/gitlabhq/issues/6623(你用的是什么Gitlab版本?)
  • 感谢您的回复,我用系统信息更新了我的问题。这些问题似乎在使用 LDAP 时发生,但我不是。但我会调查它,你永远不会知道。
  • 听起来像是服务器端的钩子拒绝了推送。也许 master 分支被锁定在 GitLab 上,而您没有对 repo 的 master 访问权限?

标签: git gitlab


【解决方案1】:

我遇到了这个问题,因为我将 master 作为受保护的分支

一旦我解除了对分支的保护,我就可以正常推送了

【讨论】:

  • 这是正确的答案。 Gitlab 有受保护的分支选项,你不能强制推送。
  • 谢谢,这非常有用...知道为什么 master 分支会在新项目中设置为受保护(无需明确设置)吗?
  • @Lucas:Gitlab 希望你在合并到 master 之前检查另一个分支中的代码。来源:about.gitlab.com/2014/11/26/keeping-your-code-protected
  • 如果我理解正确的话。如果anyone 应该推送他们的提交,那么分支列表应该是empty?这意味着,如果列表为空,我不应该得到这个错误吗?
【解决方案2】:

杀掉它并重新开始使用 Gitlab 的 Omnibus 版本。

唯一需要在 64 位 Ubuntu 上运行它 - 不知道为什么他们没有 32 位,但你有。

在我刚刚使用 Omnibus 版本之前,我经历了安装-重新安装-再试一次的地狱。

两个“烦人”的事情:Gitlab 的 Omnibus 安装使用 Nginx 网络服务器而不是 Apache(但这是有充分理由的,因为 Nginx 不会为每个人打开一个新进程connection)... 它使用 PostgreSQL 而不是 MySQL 作为其数据库。对于家庭/家庭办公室使用,当然您可以在同一台机器上安装 PostgreSQL 和 MySQL。不太明显的是如何运行 Apache 和 Nginx,或者实际上,如何让 Nginx 运行多个虚拟服务器同时仍然维护 Gitlab。

【讨论】:

  • 感谢您的帮助,不幸的是,这并没有解决我的问题。我做了一个完整的重新安装,这似乎可以解决问题。
【解决方案3】:

我有一个非常相似的症状,并通过更改项目成员来解决问题。尝试推送后我从 TurtoiseGit 收到的错误消息是:

git.exe push --progress "origin" master:master

计数对象:14,完成。 Delta 压缩最多使用 4 个线程。 压缩对象:100% (7/7),完成。书写对象:100% (8/8), 857 字节 | 0 字节/秒,完成。共 8 个(增量 3),重复使用 0 个(增量 0)

remote:GitLab:你不能访问master!远程:错误: hook 拒绝更新 refs/heads/master

致 git@gitlab.int.mycompany.com:datascience/compliance.git ! [偏僻的 拒绝] master -> master (hook denied) 错误:未能推送一些 参考 'git@gitlab.int.mycompany.com:datascience/compliance.git'

git 没有完全退出(退出代码 1)(33181 ms @ 6/27/2014 9:50:32 AM)

在 gitlab 管理页面中,我发现我不是我尝试推送的项目的成员。我是项目组的成员,但不是项目组的成员。

将自己添加为项目成员后,我的推送成功且没有错误。

【讨论】:

    【解决方案4】:

    在我的情况下,这是因为独角兽的端口被另一个java进程占用了,添加这一行 独角兽['端口'] = 8090 到 /etc/gitlab/gitlab.rb 并运行: sudo gitlab-ctl 重新配置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多