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

Gitlab Git推送错误预接收挂钩已拒绝,gitlab,githooks,Gitlab,Githooks,我已经在虚拟机上运行了gitlabhq rails服务器,遵循本教程中的1-6个步骤,并启动rails服务器执行命令sudo-u git-H bundle exec rails s s-e production。之后,我使用管理工具创建了用户,并在此用户下创建了新项目。然后,我会一如既往地将现有项目推进回购协议。但在最后一步,git-push-origin-master失败并出现错误 [远程拒绝]主机->主机(拒绝预接收挂钩) 其他信息: 1) 我还没有通过电子邮件激活链接激活用户(项目所有者)

我已经在虚拟机上运行了gitlabhq rails服务器,遵循本教程中的1-6个步骤,并启动rails服务器执行命令
sudo-u git-H bundle exec rails s s-e production
。之后,我使用管理工具创建了用户,并在此用户下创建了新项目。然后,我会一如既往地将现有项目推进回购协议。但在最后一步,
git-push-origin-master
失败并出现错误

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

其他信息:

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

2) Gitlab server生成如何将项目推送到repo的提示,并且路径中没有
存储库/
。我的意思是它生成
git@mygitlabhost:user/repo.git
而不是
git@mygitlabhost:repositories/user/repo.git
哪一个是正确的


3) 当我试图调试它时,我打开了服务器上repo内部的
pre-receive
脚本,并试图输出变量(其中有3个变量):
refs=ARGF.read
key\u id=ENV['GL\u id']
repo\u path=Dir.pwd
,发现key\u id总是空的。也许问题就在这里。。。如果是这样的话,请给我建议如何解决这个问题。谢谢

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

似乎问题出在某些服务上,例如sidekiq。运行
sudo-u git-H bundle exec rake gitlab:check RAILS\u ENV=production
会输出配置的所有问题。

gitlab默认情况下会将
master
分支标记为
protected
(请参阅为什么部分
保护代码)。如果在您的情况下是这样,那么这将有助于:

打开项目>设置>存储库并转到“受保护的分支”,在列表中找到“主”分支,然后单击“取消保护”,然后重试

通过


对于8.11及以上版本操作指南:

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


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

可能不是这样,但这是我的“预接收挂钩已拒绝”错误的解决方案:

有些存储库只允许通过拉取请求进行修改。这意味着你必须

  • 以要将更改推送到的分支为基础创建新分支
  • 提交更改并将其推送到新分支
  • 打开拉取请求以将您的分支与原始分支合并
  • 我的本地计算机中已解决以下问题:

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

    B.然后,确保在本地Git配置中正确设置了名称/电子邮件地址:为您试图推下的帐户设置本地Git配置(该检查断言您是提交文件的人) *请注意,这对名称和电子邮件地址都是区分大小写的 *它也对空间敏感-一些公司帐户的名称中有额外的空格/字符,例如“
    承包商/空间(LDN)
    ”。配置中必须包含与Bitbucket服务器上相同数量的空格。如果卡在记事本中,请检查此项

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

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

    对于MAC

    open-a TextEdit.app~/.gitconfig

    注意:您必须修复您试图推送的旧提交。

  • 修改您最后的承诺:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    

  • 我通过在
    .git/config
    中将
    远程“源”url
    http
    更改为
    git
    协议,解决了这个问题。转到项目设置-->挂钩-->(在)预接收挂钩下

    禁用
    cp要求提交中的问题引用在我的情况下,我的团队负责人创建了一个repo(repo为空),并将我指定为开发人员,因此当我直接推到代码以掌握我面临的错误时,
    ![remote rejected]master->master(接收前钩子被拒绝)
    因此,他将我指定为维护者是如何修复的,因此我能够将代码直接推送到master。

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

    运行
    git远程添加源代码后git@bitbucket.org:StatMarianne/.git
    ,我运行了
    git push origin master
    ,但没有任何效果(我通常不会在
    git push
    中使用-u选项,因为我不介意在推拉时键入完整的回购和分支名称)

    错误显示为:

    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'
    
    remote:不允许写入此存储库。
    到bitbucket.org:StatMarianne/.git
    ! [远程拒绝]主机->主机(拒绝预接收挂钩)
    错误:无法将某些引用推送到'git@bitbucket.org:StatMarianne/.git'
    
    但当我运行git push-u origin master时,我的本地分支确实成功地被推送了(严格按照BitBucket的指示)


    我觉得很奇怪,因为-u
    -设置上游
    )无论如何只应该“添加上游(跟踪)引用…”。

    我遵循了heroku日志的说明(使用cmd:heroku日志->显示错误)
    然后执行cmd:“heroku buildpacks:clear”。终于,它为我工作了

    我也面临同样的问题,这是因为我在推动我的代码指令
    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