git push失败,并带有远程消息:错误:挂钩拒绝更新refs / heads / master


9

我最近正在尝试在社区git repo上启动我自己的项目,而且遇到了一些麻烦。我是git的新手,但是这是我一直在尝试进行的测试。

我运行以下命令,它们都运行正常。

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.xxxxx.org:community/testproject.git

并且以上所有命令均无错误运行。但是,当我运行下一个命令时,我得到了一个巨大的错误。

git push -u origin master

错误是。

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://MYEMAIL.com@git.xxxxxx.org': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

我不确定从这里开始该怎么做,但是我们非常感谢您的帮助。

另外,如果重要的话,我正在运行Arch。

编辑: 我试图重新安装耙,它没有用。我当前的rake版本是10.1.1,所以我尝试将其删除并替换为10.1.0版本,但这也没有解决。

但是,当我安装耙子时,出现错误:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

这会导致问题吗?

Answers:


9

远程拒绝接收数据只是真正问题的副作用-git认为它被拒绝了,因为远程端上的一个钩子失败了,退出状态> 0(您可以看到它在Ruby追溯)。似乎其中一个钩子尝试使用rake,但找不到。这可能与您的特定存储库无关。该消息也并非来自您的本地计算机,请注意,该消息的前缀是“ remote”,是缺少的远程服务器rake,因此可能只有该侧的sysadmin可以解决此问题。

我建议您联系管理社区git存储库的任何人。


那正是我的想法。我的git repo中的钩子都没有激活,到目前为止,我什至没有做任何事情似乎可以更改错误或创建新的钩子。我将与该回购的所有者联系,查看他是否有任何有关此问题的信息。
约书亚·斯特罗

原来的问题是,我试图推翻他们的GitLab不支持的HTTP方法。您必须转而使用SSH,效果很好。我必须说,没想到,
Joshua Strot

0

我相信这是您的问题。

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

搜索此错误时,我遇到了有关SO的问答,标题为:error:挂钩在推送分支时拒绝更新refs / heads / external_pub

看来服务器上有一个git hook拒绝了推送。

摘抄

服务器端挂钩

除了客户端挂钩之外,您还可以作为系统管理员使用几个重要的服务器端挂钩来为您的项目实施几乎所有类型的策略。这些脚本在推送到服务器之前和之后运行。pre挂钩可以随时退出非零值以拒绝推送以及将错误消息打印回客户端。您可以设置一个所需的复杂的推送策略。

为了确定为什么收到此错误消息,您需要找出哪个钩子使您绊倒了。挂钩存储在hooksgit文件夹(位于远程服务器端)内的文件夹中-查找pre-receive挂钩或update挂钩,然后检查导致问题的原因。


在我的hooks文件夹中,我有多个扩展名为.sample的文件。我没有预接收挂钩,但是有一个更新挂钩。由于它们都具有.sample扩展名,所以我不相信它们中的任何一个都在使用中,那可能是服务器上的钩子拒绝了我吗?我在网上看了一下,有很多人通过做各种事情解决了我的问题,但在我看来,这些问题都没有解决。
约书亚·斯特罗

0

检查GIT储存库中的角色/组和权限我的情况,只有红色许可及其在GIT储存库团队提供的读/写访问权限后得到解决


0

@Radhakrishnan已经建议,您可能会遇到权限问题。

如果您正在使用Redmine Git Hosting,请检查您的projet权限Manager角色是否已分配给尝试重写其git跟踪参考的用户。

请注意,我假设您知道git push -force对可能共享同一远程分支的其他用户的影响。有关更多详细信息,请查看本文

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.