Erro Git ao tentar enviar - gancho de pré-recebimento recusado


206

Quando tento fazer uma alteração confirmada, recebo o seguinte erro ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

O que está acontecendo?


8
O que há no mycogit de pré-recebimento?
Rob mayoff

Você não tentaria enviar arquivos grandes para o github, faria?
Adam F

FYI: hoje, todos os meus colegas receberam essa mensagem de erro, eventualmente decidimos reiniciar nosso servidor stash e ele foi corrigido magicamente. Não temos idéia do que realmente era o problema.
T_D

Respostas:


125

Você deve perguntar a quem mantém o repositório git@mycogit/cit_pplus.git.

Seus commits foram rejeitados pelo pre-receivegancho desse repositório (esse é um script configurável pelo usuário que visa analisar os commits recebidos e decidir se eles são bons o suficiente para serem aceitos no repositório).

Também é uma boa idéia pedir a essa pessoa para atualizar o gancho, para que ela imprima os motivos da rejeição.

Se o mantenedor é você mesmo, parece que você tem um problema com sua configuração no lado do servidor. Por favor, compartilhe mais informações então.


7
No meu caso, o BitBucket teve uma validação do conteúdo da mensagem de confirmação, confrontando-o com os tickets do JIRA, que estavam offline naquele momento.
Vítor Neil Avelino

1
Então, quando ficou on-line, foi corrigido?
shareef

5
No meu caso, houve uma incompatibilidade no nome de usuário com o qual os commits foram gerados e no BitBucket. Eu não estava autorizado a atualizar o nome de usuário do BitBucket, então tive que redefinir meus commits e enviá-los novamente com o nome de usuário atualizado. Você pode atualizar o nome de usuário do git com este comandogit config user.name 'UpdatedUserName'
MM

3
No nosso caso, o bitbucket não permitiu que ninguém enviasse para esse ramo.
Ramon Fincken

No meu caso, tive que encontrar as configurações de repo no bitbucket e desativar o committer de verificação nas configurações de Hooks.
Sizons 23/08/19

78

Aposto que você está tentando um impulso não-rápido e o gancho o bloqueia. Se for esse o caso, basta executar git pull --rebaseantes de pressionar para refazer as alterações locais na mais recente base de código.


Isso é incrível. Agora eu posso empurrar e puxar novamente, mas antes disso eu preciso configurar como git branch --set-upstream-to=origin/myBranch. +1 para sua resposta.
AlokeT

Em um novo repositório, enviei uma ramificação (não mestre), depois a refizemos e obtive o erro durante a transmissão. Não encontrei ganchos da web. Eu executei git pull --rebase, tive que me refazer novamente e fui capaz de empurrar o ramo. Finalmente, descobri que meu ramo estava protegido.
CoolMind

60

O tamanho do arquivo é importante. Há um limite de ~ 120 MB para um único arquivo. No meu caso, .gitignore usando o Visual Studio tinha o arquivo listado, mas o arquivo ainda estava confirmado. Ao usar o git cli, podemos obter informações mais detalhadas sobre o erro.

o gancho de pré-recebimento recusado foi resultado do grande arquivo. Validando basicamente o push.

Para resolvê-lo, removi a última confirmação usando:

git reset --soft HEAD~1

Excluí o arquivo da confirmação.

Nota: Use HEAD ~ N para voltar ao número N de confirmações anteriores. (ou seja, 3, 4) Sempre use a opção --soft para manter as alterações na pasta

espero que ajude.


Isso ajudou, pois meu problema era que um arquivo de despejo de SQL indesejado (155 MB de tamanho) estava sendo enviado (por acidente).
Mehrdad Dastgir

1
O limite de tamanho do arquivo depende do seu provedor de hospedagem. O GitHub tem um limite desse tamanho, para outros, varia, e o git auto-hospedado naturalmente não tem esses limites.
1615903

1
o que você faz se já tiver vários commit após o push recusado? este é o meu caso eu tenho um grande arquivo indesejado (627MB) em um dos commits anteriores antes de tentar empurrar a repo
leeCoder

Eu tinha um arquivo CSV sendo carregado por acidente. Então, no meu caso, o erro foi devido a isso.
tonhozi

Se você tiver várias confirmações, aumente o índice para redefinir a cabeça novamente para essa confirmação. Por exemplo, use HEAD ~ 3 para retornar às três confirmações anteriores. Sempre use a opção --soft para manter as alterações na pasta.
Ozkary

13

Isso pode ocorrer porque você não tinha o direito de acesso para enviar por push a uma ramificação como master. Você pode pedir ao mantenedor para lhe dar o direito de enviar confirmações.


Acho que isso está correto, mas o interessante é que o VS parece estar tentando enviar para o ramo pai, e não o nome do ramo real para o controle remoto. Portanto, se o ramo pai estiver protegido, isso parece estar ocorrendo, mas parece não haver maneira de corrigir isso no VS e você precisará alternar para a linha cmd.
Mark


8

Recebi esta mensagem quando o servidor GitLab estava passando por algumas alterações. No dia seguinte, empurrar funcionou bem. De qualquer forma, como outros apontaram, verifique com seu mantenedor para ter certeza.


1
Só tive esse problema e acho que o GitLab estava fazendo alterações. Deu 10 minutos e funcionou. Eu não mudei nada.
Woter324 03/03/19

Só tive esse problema também. Para quem quiser verificar se esse é o caso: status.gitlab.com
Renan Ferrari


5

Eu encontrei esse mesmo problema.
O que resolveu para mim foi mudar para outro ramo e depois voltar para o original.

Não sei qual foi a causa do sublinhado, mas isso foi corrigido.


Eu não poderia empurrar para o novo ramo não
zabop


2

Caso ajude alguém:

Eu tinha um repositório em branco sem ramificação principal para desproteger (no Gitlab), portanto, antes de executar git push -u origin --all

  • Eu tive que correr git push -u origin masterprimeiro
  • desproteger o ramo mestre temporariamente
  • empurre o resto ( --all& --tags)

2

Eu enfrentei o mesmo erro, ao verificar se tinha acesso de desenvolvedor e não podia publicar uma nova ramificação. A adição de direitos de acesso mais altos resolveu esse problema. (Gitlab)


2

Eu recebi esse erro com a essência do GitHub. Eu estava tentando enviar um commit com arquivos em subdiretórios. Acabou que a essência só pode ter arquivos no diretório raiz.


Entendi isso também. Acontece que o repositório tinha o arquivo "snippets\\csharp.json"que dificultava o git no Windows.
Carl Walsh

2

Remova a opção de ramificação protegida ou permita que funções adicionais, como desenvolvedores ou administradores, permitam que esses usuários com esse erro façam mesclagens e envios.


1

No meu caso, temos ganchos para mensagens de confirmação, nosso script de servidor aceita confirmações se elas tiverem o formato especial para mensagem de confirmação "<JIRA ID><Message>". Ele (gancho) recusa a confirmação se o respectivo ticket Jira não existir ou se houver alguns símbolos especiais na mensagem de confirmação. Eu enfrento esse erro quando adiciono /, [,> etc. em uma mensagem de confirmação, removendo-os bem.


É improvável que esta resposta ajude, pois o pôster original (e qualquer outra pessoa que visitar no futuro) terá um script diferente configurado como um gancho de pré-recebimento.
Aronisstav

1

Na verdade, isso acontece quando o YACC é ativado no lado do servidor no BitBucket. O YACC permite que nomes de problemas do JIRA sejam mencionados na mensagem de confirmação. Portanto, sempre que você confirmar algo, mantenha seu número JIRA na mensagem de confirmação e, além disso, você poderá adicionar sua própria mensagem.


1

Eu estava usando o GitKraken e criamos uma ramificação local, depois juntamos duas ramificações remotas e tentamos enviar a ramificação local à origem. Não funcionou com a mesma mensagem de erro.

A solução foi criar a ramificação local e enviá-la primeiro para a origem e, em seguida, fazer a mesclagem.


1

Problema: "PUSH Failed refs / head / - gancho de pré-recebimento recusado"

Eu enfrentei o problema de não poder enviar minhas alterações ao ramo de origem e qualquer coisa para dominar o ramo de um repositório de projeto específico, pois o tamanho desse repositório estava acima do limite rígido de 2 GB. Estava lançando o erro. Isso ocorreu porque empurramos os dados de teste sem saber para bitbucket de outras ramificações de teste.

PUSH Falhou refs / head / - gancho de pré-recebimento recusado

A verificação tentada é a mesma com outros repositórios de projetos e eles não estavam tendo problemas.

Consertar:

Meu colega percebeu que, quando clonamos o projeto de volta localmente, o tamanho do projeto era de 110 MB. Então começamos a limpar os ramos que mesclamos anteriormente e ramos ativos que não são mais necessários. Depois que a limpeza é feita em algumas filiais, percebemos que o tamanho do repositório caiu drasticamente de 2 GB para 120 MB. Em seguida, tentamos fazer as alterações no meu ramo e funcionou.


1

No meu caso, eu tinha um novo repositório, empurrei um ramo ('UCA-46', não 'mestre'), refizi-o, empurrei-o à força novamente e obtive o erro. Não havia ganchos da web. Eu executeigit pull --rebase como @ThiefMaster aconselhou, teve que rebase novamente e foi capaz de empurrar o ramo. Mas essa era uma maneira estranha e difícil.

Então, vi o gancho de pré-recebimento de erro de envio do Git recusado . Eu descobri que meu ramo ficou protegido . Tirei a proteção e pude forçar novamente.

insira a descrição da imagem aqui


0

Eu entendi isso ao tentar passar para uma instância dokku. Acontece que o disco estava cheio no meu servidor.

Correu: du -f

E o resultado foi:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

Para mim, a autorização no servidor git remoto resolve o problema. insira a descrição da imagem aqui


0

No meu caso, é porque eu adicionei acidentalmente um arquivo gigante ao meu envio não confirmado e não consegui me livrar dele, independentemente de qualquer puxar, redefinir ou reiniciar que fiz depois.

minha solução suja, mas viável, é renomear o diretório atual, clonar novamente o diretório para local e refletir as alterações manualmente no diretório local reclonado ...

Não parece bom, mas funciona ...


1
Eu enfrentei o mesmo problema, e usando o $ git reset --soft HEAD ~ 1 como o que o @ozkary sugeriu ajudou.
jarrettyeo

0

O erro para mim foi que o projeto não tinha ramificações criadas e minha função era desenvolvedor; portanto, não consegui criar nenhuma ramificação, solicite que elas me dêem as permissões pertinentes e tudo em ordem agora!


0

Uma ramificação padrão (por exemplo master) ainda não existe para o seu controle remoto. Então, primeiro você precisa criar uma masterramificação no servidor remoto git (por exemplo, criando um README.mdarquivo padrão ) e depois tentar pushtodas as suas ramificações locais existentes usando este comando:

git push -u origin --all

0

Para mim, tudo estava funcionando bem até que o Bitbucket mudou automaticamente sua política hoje (21 de abril de 2020). Isso acontece alinhado com um novo recurso recentemente introduzido hoje chamado Workspaces , então suspeito que tenha algo a ver com isso.

Solução alternativa : eu (como administrador) segui as instruções para adicionar o endereço de email aos usuários na interface do usuário (o email que você está usando pode ser encontradogit config --list

insira a descrição da imagem aqui


-7

A especificação de uma versão do node.js. pode resolver o problema, como

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.