Git推送错误预接收挂钩拒绝

Hro*_*oft 129 githooks gitlab

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

[远程拒绝]主 - >主(预接收挂钩拒绝)

附加信息:

1)我没有通过电子邮件激活链接激活用户(项目所有者),因为我没有在服务器端配置后期服务,我在本手册中没有找到如何操作的说明.

2)Gitlab服务器生成如何将项目推送到repo并且没有repositories/路径的提示.我的意思是它生成git@mygitlabhost:user/repo.git而不是git@mygitlabhost:repositories/user/repo.git正确的.

3)当我试图调试它,我打开pre-receive里面回购脚本在服务器上,并试图输出变量(有其中3) refs = ARGF.read,key_id = ENV['GL_ID']repo_path = Dir.pwd发现,该KEY_ID总是空的.也许问题就在这里......如果是这样,请给我一些如何解决这个问题的建议.谢谢

Max*_*kov 188

在默认情况下标记GitLab master分支为protected(见部分Protecting your codehttps://about.gitlab.com/2014/11/26/keeping-your-code-protected/为什么).如果是这样,那么这可以帮助:

打开项目>设置[>存储库选项卡]并转到"受保护的分支",选择:"开发人员可以推送"并再试一次.

通过https://gitlab.com/gitlab-com/support-forum/issues/40

对于版本8.11及更高版本的方法:https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users

  • UI已经改变了一点:在项目"设置"之后,单击"存储库"选项卡.然后"受保护的分支" (6认同)
  • 由于`GitLab 8.11`的选项有所改变,请查看详细信息[这里](https://docs.gitlab.com/ee/user/project/protected_branches.html) (2认同)

Saa*_*mar 29

就我而言,我的团队领导创建了一个 repo(repo 是空的)并将我分配为开发人员,因此当我直接推送代码以掌握我面临的错误时,! [remote rejected] master -> master (pre-receive hook declined)如何修复他分配给我作为维护者的问题,所以我能够将代码直接推送给主人。


Mav*_*k09 10

解决了本地机器中的问题:

A.首先,确保使用正确的登录详细信息连接到Bitbucket Server(即属于您的用户名/密码/ SSH密钥) 

B.然后,确保在本地Git配置中正确设置了名称/电子邮件地址:为您尝试推送的帐户设置本地Git配置(检查断言您是提交文件的人)*请注意,这是区分大小写的,包括姓名和电子邮件地址*它也是空间敏感的 - 某些公司帐户的名称中有额外的空格/字符,例如." Contractor/ space space(LDN)".您必须在配置中包含与Bitbucket Server相同数量的空格.如果卡住,请在记事本中检查

C.如果您使用的是错误的帐户,只需切换您的帐户凭据(用户名/密码/ SSH密钥),然后再次尝试推送.

D.否则,如果您的本地配置不正确,则需要对其进行修改

对于MAC

open -a TextEdit.app ~/.gitconfig

注意:您必须修复您尝试推送的旧提交.

  1. 修改你的上次提交:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试重新推送您的提交:

    > git push
    
    Run Code Online (Sandbox Code Playgroud)


Rif*_*zak 10

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

  1. 在你的 master 分支中创建一个分支git checkout -b new-branch-name
  2. 推送新分支git push --set-upstream origin new-branch-name
  3. 现在远程合并分支到master。
  4. 合并后,重置本地master分支git reset --soft HEAD~1
  5. 最后git pull

  • 这不是正确的解决方案。它将显示与 master 相同的错误。 (2认同)

Hro*_*oft 8

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


小智 8

这对我有用。

在最新版本的 GitLab 中,您可以在以下位置找到它:

您的 GitLab 项目 > 设置 > 存储库 > 受保护的分支 一项或两项设置(允许合并/推送)将其设置为:开发人员 + 维护者或将该人设为维护者。

https://gitlab.com/gitlab-org/gitlab-recipes/-/issues/27


joe*_*hoa 5

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