我已经在虚拟机上运行了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中的所有问题。

其他回答

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

重命名项目并复制所有更改。


我几乎试过了这一页上的所有答案。

最后,我这样做来解决这个问题:

将项目重命名为project-tmp 再次将项目克隆到项目 手动将所有更改从project-tmp移动到project(显然不是复制。git文件夹)。 Git添加。 git commit -m 'Blah Blah ' git推

那工作!


为什么会这样?

我的理论是,在某些提交(或某些东西)中,有一个糟糕的设置把它搞砸了。

转到 LFS

我做的另一件事是,我设置了git lfs。我不确定这是否重要。

我最近在Gitlab上遇到了这个问题,上面的解决方案都不适合我。

最后,我意识到公钥是由我的同事部署到存储库上的,他已经离开了公司,他的帐户在几周后被禁用了。这导致他使用的钥匙无法使用,即使这不是他的个人钥匙。

我删除了密钥,重新上传了相同的密钥,它起作用了。永久解决方案是创建一个服务帐户并使用该帐户上传密钥。

引用自Gitlab文档。

所有部署密钥都关联到一个帐户。由于帐户的权限可能会更改,这可能会导致正在工作的部署密钥突然无法推送到受保护分支的情况。

在我的情况下,我的团队领导创建了一个repo(repo是空的),并分配我作为开发人员,所以当我直接推到代码以掌握我所面临的错误![远程拒绝]主->主(预接收钩子拒绝)所以它是如何修复的,他分配给我作为维护者,这样我就可以直接把代码推给主。

我在使用Bitbucket时也遇到了同样的问题。

在推送时,错误是“提交消息不匹配正则表达式”。

到达“设置”>“挂钩”>启用“另一个提交检查器”选项。

它开始工作了!!