Git推送错误预接收钩拒绝
我已经在虚拟机上运行gitlabhq rails server,从这个教程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
。 之后,我创build了用户,使用pipe理工具,并在这个用户下创build了新的项目。 然后我一直试图把现有的项目推到这个回购。 但是在最后一步, git push origin master
失败并报错
[远程拒绝]主控 – >主控(预接收勾拒)
附加信息:
1)我没有通过电子邮件激活链接激活用户(项目所有者),因为我没有在服务器端configurationpost服务,在本手册中没有find如何做到这一点的说明。
2)Gitlab服务器生成如何推送项目回购和提示没有repositories/
在path。 我的意思是它生成git@mygitlabhost:user/repo.git
而不是git@mygitlabhost:repositories/user/repo.git
这是正确的。
3)当我试图debugging它时,我打开服务器上回购的pre-receive
脚本,并试图输出variables(其中有3个): refs = ARGF.read
, key_id = ENV['GL_ID']
和repo_path = Dir.pwd
并find,那key_id总是空的。 也许问题在这里…如果是这样,请给我build议如何解决这个问题。 谢谢
默认情况下,GitLab将master
分支标记为protected
(请参阅https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ why Protecting your code
)。 如果是这样的话,这可以帮助:
打开你的项目>设置[> Repository]选项卡,进入“Protected branches”,select:“Developers can push”并重试。
似乎问题是一些服务,如sidekiq。 运行sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
输出configuration的所有问题。
您可能没有开发人员访问项目或主分支。 您需要dev访问来推动新的工作。
新工作意味着新的分支机构和承诺。
在本地机器中解决了问题后:
答:首先,确保您使用正确的login详细信息连接到Bitbucket服务器(即属于您的用户名/密码/ SSH密钥)
B.然后,确保在本地Gitconfiguration中正确设置了名称/电子邮件地址:为您试图推送的帐户设置本地Gitconfiguration(检查声明您是提交文件的人)*请注意,这是区分大小写的名称和电子邮件地址*它也是空间敏感的 – 一些公司帐户名称中有额外的空格/字符,例如。 “ Contractor/ space space(LDN)
”。 您必须在您的configuration中包含与在Bitbucket服务器上相同数量的空格。 如果卡住,请在记事本中查看。
C.如果您使用的是错误的帐户,只需切换您的帐户凭据(用户名/密码/ SSH密钥),然后再次尝试推送。
D.否则,如果你的本地configuration不正确,你将需要修改它
对于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 push
你需要添加你的ssh密钥到你的git账户,如果它抛出错误,那么删除以前的ssh密钥并创build一个新的ssh密钥然后添加。
可能不是这种情况,但这是我的“ 预接收钩拒绝 ”错误的解决scheme:
有一些存储库只允许通过Pull Request进行修改。 这意味着你必须
- 创build一个新的分支,作为您想要将更改推送到的分支。
- 提交并将更改推送到新分支。
- 打开合并请求,将您的分支与原始分支合并。