Gitlab Git推送错误预接收挂钩已拒绝
我已经在虚拟机上运行了gitlabhq rails服务器,遵循本教程中的1-6个步骤,并启动rails服务器执行命令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) 我还没有通过电子邮件激活链接激活用户(项目所有者)
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