Gancho de pré-recebimento de erro de push do Git recusado

167

Executei o servidor gitlabhq rails na máquina virtual, seguindo as 1-6 etapas deste tutorial https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md e inicia o comando de execução do servidor rails sudo -u git -H bundle exec rails s -e production. Depois disso, criei o usuário, usando as ferramentas administrativas e criei um novo projeto com esse usuário. Então, estou tentando enviar o projeto existente para esse repositório, como sempre. Mas na última etapa, git push origin masterfalha com o erro

mestre [remoto rejeitado] -> mestre (gancho de pré-recebimento recusado)

Informação adicional:

1) Não ativei o usuário (proprietário do projeto) por meio do link de ativação de email, porque não configurei o serviço de postagem no servidor e não encontrei instruções sobre como fazer isso neste manual.

2) O servidor Gitlab gera dicas sobre como enviar o projeto para o repositório e não há repositories/caminho. Quero dizer, gera em git@mygitlabhost:user/repo.gitvez do git@mygitlabhost:repositories/user/repo.gitque está correto.

3) Quando eu tentei depurá-lo, abri pre-receivescript dentro repo no servidor e tentou variáveis de saída (há 3 deles): refs = ARGF.read, key_id = ENV['GL_ID']e repo_path = Dir.pwde encontrado, que key_id está sempre vazio. Talvez o problema esteja aqui ... Se assim for, por favor, me dê sugestões sobre como corrigir isso. obrigado

Hroft
fonte
13
Juro, há pelo menos uma pessoa em cada equipe de desenvolvimento de software que acorda todos os dias e pensa em como tornar a vida de outros desenvolvedores muito mais difícil.
Samayo 23/06
Parece que há uma resposta muito popular que deve funcionar para a maioria das pessoas. No meu caso, no entanto, a mesma mensagem foi recebida do Git Hub quando houve acidentalmente outro envio já em andamento de outra máquina ao tentar enviá-lo.
Hack-R

Respostas:

230

Por padrão, o GitLab marca o masterramo como protected(Veja a parte Protecting your codeem https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ why). Nesse caso, no seu caso, isso pode ajudar:

Abra seu projeto> Configurações> Repositório e vá para "Ramos protegidos", encontre o ramo "mestre" na lista e clique em "Desproteger" e tente novamente.

via https://gitlab.com/gitlab-com/support-forum/issues/40

Para a versão 8.11 e superior instruções da : https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-fficient-users

Max Vyaznikov
fonte
8
A interface do usuário mudou um pouco: após o projeto "Configurações", clique na guia "Repositório". Então "Ramos Protegidos"
Donn Lee
Então, eu estava tendo o mesmo problema que a OP tinha e essa solução funcionou para mim, obrigado! Mas agora eu estou pensando, por quê? Estou usando o gitlab há um tempo e de repente eu faço isso? O que mudou?
Andrew Lamarra
2
Desde GitLab 8.11as opções mudou um pouco, verificar os detalhes aqui
Arghya C
enfrentando o mesmo problema. Aqui eu nem sou capaz de empurrar outro ramo também. Estou empurrando pela primeira vez embora.
Santosh Kadam
1
eu removi desprotegido, mas o que vai acontecer agora? mais alguém no mundo pode trabalhar nesse repositório?
Flutterer
14

Problema resolvido a seguir na minha máquina local:

R. Primeiro, verifique se você está usando os detalhes corretos de logon para se conectar ao Bitbucket Server (ou seja, um nome de usuário / senha / chave SSH que pertence a você) 

B. Em seguida, verifique se o nome / endereço de email está definido corretamente na configuração local do Git: Defina a configuração local do Git para a conta que você está tentando enviar (a verificação afirma que você é a pessoa que confirmou os arquivos) * Observe que isso faz distinção entre maiúsculas e minúsculas, tanto para o nome quanto para o endereço de e-mail * Também é sensível ao espaço - algumas contas da empresa têm espaços / caracteres extras em seu nome, por exemplo. "Contractor/ space space(LDN) " Você deve incluir o mesmo número de espaços em sua configuração que no Bitbucket Server. Verifique isso no bloco de notas se preso.

C. Se você estava usando a conta errada, basta mudar as credenciais da sua conta (nome de usuário / senha / chave SSH) e tente pressionar novamente.

D. Caso contrário, se sua configuração local estiver incorreta, será necessário alterá-la

Para MAC

open -a TextEdit.app ~/.gitconfig

NOTA: Você precisará corrigir as confirmações antigas que estava tentando enviar.

  1. Altere seu último commit:

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

    > git push
    
Maverick09
fonte
12

No meu caso, minha equipe liderou a criação de um repo (repo estava vazio) e me designou como desenvolvedor, então, quando pressionei o código diretamente para dominar o erro que estava enfrentando, ! [remote rejected] master -> master (pre-receive hook declined)como foi corrigido que ele me designou como mantenedor, para que eu foi capaz de enviar o código diretamente ao mestre.

Saad Qamar
fonte
10

Parece que o problema está em alguns serviços, como o sidekiq. A execução sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productiongera todos os problemas com a configuração.

Hroft
fonte
2

Talvez você não tenha acesso de desenvolvedor ao projeto ou ramo principal. Você precisa de acesso de desenvolvedor para promover novos trabalhos.

Novo trabalho significa novos ramos e confirmações.

Vishav Premlall
fonte
2

Pode não ser o caso, mas essa foi a solução para meu " gancho de pré-recebimento recusado" erro ":

Existem alguns repositórios que permitem modificações apenas por solicitação de recebimento . Isso significa que você precisa

  1. Crie uma nova ramificação tendo como base a ramificação na qual você deseja enviar as alterações.
  2. Confirme e envie suas alterações para a nova ramificação.
  3. Abra uma solicitação pull para mesclar sua ramificação com a original.
Rocío García Luque
fonte
0

Você precisa adicionar sua chave ssh à sua conta git; se isso gerar erro, exclua a chave ssh anterior e crie uma nova chave ssh e adicione.

Hardik Hardiya
fonte
Isso não ajudou. :( Testado em ambas as contas - root e myuser na VM e na máquina local resp.
Hroft
verifique git remote -v, seu repositório git foi adicionado ou não?
Hardik Hardiya
'git remote -v' outputs: origin git @ mygitlabhost: repositórios / usuário / repo.git (busca) origin git @ mygitlabhost: repositórios / usuário / repo.git (push)
Hroft
Se você estiver usando o gitlab hospedado, o problema provavelmente está do lado deles. Apenas tente novamente alguns minutos depois.
Erik Aronesty
0

Eu resolvi esse problema alterando remote 'origin' urlde httppara gitprotocolo em.git/config

zzxwill
fonte
0

Vá para Configurações do projeto -> Ganchos -> (Abaixo) Ganchos de pré-recebimento

Desabilitar cp exige referência de problema em confirmações

Manoj
fonte
0

Eu me deparei com o mesmo erro usando o BitBucket. Como eu tinha um repositório Git local que queria fazer backup online, criei um novo repositório a partir da minha conta BitBucket (usando a interface da web).

Após a execução git remote add origin [email protected]:StatMarianne/<a private repo>.git, corri git push origin mastersem sucesso (normalmente não uso a opção -u comgit push porque não me importo de digitar os nomes completos dos repositórios e ramificações ao pressionar e puxar).

O erro dizia:

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 '[email protected]:StatMarianne/<a private repo>.git'

Mas minha filial local foi enviada com êxito quando eu corri git push -u origin master (seguindo estritamente as instruções do BitBucket).

Acho surpreendente, já que -u ( --set-upstream) deve apenas "adicionar referência a montante (rastreamento) ..." De qualquer forma.

mkcor
fonte
-1

Eu enfrentei o mesmo problema, porque estou enviando meu código diretamente no ramo mestre e não tenho direitos para isso. Então, introduzi meu código em uma nova ramificação e, depois disso, criei uma solicitação pull para mesclar com o mestre.

ferozpuri
fonte