我已经在虚拟机上运行了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总是空的。也许问题就在这里……如果是这样,请给我建议如何解决。谢谢


当前回答

解决方案:

你需要删除。lock文件,yarn。锁或包锁。Json文件,为安全起见,您可以将此文件移动到另一个文件夹 然后,git添加。 Git commit -m 'update' Git push heroku main

其他回答

尽管这个问题是特定于gitlab的,但类似的错误也会发生在github上,这取决于它是如何设置的(通常是github Enterprise)。

您需要熟悉以下概念:

pre-receive钩子 组织人 人则

webhook比其他两个项目更容易理解。

预接收钩子

是运行在GitHub企业服务器上的脚本吗 执行政策。当发生推送时,每个脚本在一个 孤立的 环境 以确定是否接受或拒绝推送。

组织人:

Webhook事件也从你的存储库发送到你的“组织Webhook”。更多信息。

这些都设置在你的github企业。它们是特定于github企业版本的。 由于您的访问限制(开发人员、维护人员、管理员等),您可能没有可见性。

请尝试:

git push -u origin master

如果你仍然不能成功地推送,创建一个新分支或选择另一个分支并推送新分支

您可能没有开发人员访问项目或主分支的权限。你需要开发权限来推动新工作。

新的工作意味着新的分支和提交。

如果你正面临这样的问题

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

这是因为master是受保护的,你可以做2步

要移除保护,请遵循以下步骤-

进入项目设置。 单击Repository选项卡。 打开受保护的分支。 找到你的主分支并单击Unprotect。

否则

我们可以从主分支切换到主分支

Git checkout -b main git分支-D master Git push heroku main

黑客快乐! !

这是因为主分支受到保护,以下是清除此错误的步骤。

在你的主分支中创建一个分支git checkout -b new-branch-name 推送新的分支git Push——set-upstream origin new-branch-name 现在远程地将分支合并到主分支。 一旦合并,重置本地主分支git重置-soft HEAD~1 最后git拉