我已经在虚拟机上运行了gitlabhq rails服务器,遵循本教程https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md中的1-6步,并启动rails服务器,执行命令sudo -u git -H bundle exec rails s -e production。之后,我创建了用户,使用管理工具,并在此用户下创建了新项目。然后,我试图像往常一样将现有项目推到这个回购。但在最后一步,git push origin master失败,并出现错误

[远程拒绝]master -> master(预接收钩子拒绝)

额外的信息:

1)我还没有通过电子邮件激活链接激活用户(项目所有者),因为我还没有在服务器端配置post服务,我没有找到如何在本手册中做到这一点的说明。

2) Gitlab服务器生成提示如何推送项目到repo,没有repositories/ in路径。我的意思是它生成git@mygitlabhost:user/repo。Git代替git@mygitlabhost:repositories/user/repo。Git是正确的。

3)当我试图调试它时,我在服务器上的repo中打开了预接收脚本,并尝试输出变量(有3个):refs = ARGF。read, key_id = ENV['GL_ID'] and repo_path = Dir。PWD和发现,key_id总是空的。也许问题就在这里……如果是这样,请给我建议如何解决。谢谢


当前回答

似乎问题出在一些服务上,比如sidekiq。执行sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production将输出config中的所有问题。

其他回答

我已经按照heroku日志img https://devcenter.heroku.com/articles/buildpacks#detection-failure的指示(使用cmd: heroku日志->显示您的错误) 然后执行cmd: "heroku buildpacks:clear"。最后,它对我有用!

你需要添加你的ssh密钥到你的git帐户,如果它抛出错误,然后删除之前的ssh密钥,并创建一个新的ssh密钥,然后添加。

对我来说,发生这种情况是因为之前的未决意见不符合某些标准。经过下面的命令,它为我工作 git重置——硬提交 (成功提交的commit id先于不成功提交的commit id)

我在使用BitBucket时偶然发现了同样的错误。我有一个本地的Git回购,我想在线备份,所以我从我的BitBucket帐户创建了一个新的存储库(使用web界面)。

运行git后远程添加origin git@bitbucket.org:StatMarianne/<a private repo>。我运行git push origin master没有任何效果(我通常不会在git push中使用-u选项,因为我不介意在推拉时输入完整的repo和分支名称)。

错误如下:

remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'

但是当我运行git push -u origin master(严格按照BitBucket的指示)时,我的本地分支确实被成功推送了。

我发现这很令人惊讶,因为-u(——set-upstream)应该只“添加上游(跟踪)引用…”不管怎样。

我也遇到过同样的问题,这是因为我直接在主分支中推送我的代码,而我没有这个权限。所以我把我的代码推到一个新的分支中,在那之后,我创建了一个pull请求来合并master。