Error de Git al intentar empujar: el gancho previo a la recepción se rechazó

206

Cuando intento presionar un cambio que he cometido, aparece el siguiente error ...

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'

¿Que esta pasando?

Dave
fuente
8
¿Qué hay en el hookon mycogit previo a la recepción?
Rob Mayoff
No tratarías de enviar archivos grandes a Github, ¿verdad?
Adam F
FYI: hoy todos mis colegas recibieron este mensaje de error, finalmente decidimos reiniciar nuestro servidor oculto y se solucionó mágicamente. No tenemos idea de cuál era realmente el problema.
T_D

Respuestas:

125

Debe preguntar a quien mantiene el repositorio en git@mycogit/cit_pplus.git.

Sus compromisos fueron rechazados por el pre-receivegancho de ese repositorio (es un script configurable por el usuario que está destinado a analizar los compromisos entrantes y decidir si son lo suficientemente buenos como para ser aceptados en el repositorio).

También es una buena idea pedirle a esa persona que actualice el enlace, para que imprima los motivos del rechazo.

Si el mantenedor es usted mismo, entonces parece que tiene un problema con su configuración en el lado del servidor. Por favor, comparta más información entonces.

Alexander Gladysh
fuente
77
En mi caso, BitBucket tuvo una validación del contenido del mensaje de confirmación, enfrentándolo con los tickets de JIRA, que estaba desconectado en ese momento.
Vítor Neil Avelino
1
Entonces, cuando se puso en línea, ¿está arreglado?
shareef
55
En mi caso, fue una falta de coincidencia en el nombre de usuario con el que se generaron los commits y el nombre de usuario en BitBucket. No estaba autorizado para actualizar el nombre de usuario de BitBucket, así que tuve que restablecer mis confirmaciones y volver a confirmarlas con el nombre de usuario actualizado. Puede actualizar el nombre de usuario de git con este comandogit config user.name 'UpdatedUserName'
MM
3
En nuestro caso, bitbucket no permitió que nadie empujara a esta rama.
Ramon Fincken
En mi caso, tuve que encontrar la configuración de repositorio en bitbucket y deshabilitar el committer de verificación en la configuración de Hooks.
Sizons el
78

Apuesto a que estás intentando un empuje no rápido y el gancho lo bloquea. Si ese es el caso, simplemente ejecute git pull --rebaseantes de presionar para cambiar la base de sus cambios locales en la nueva base de código.

ThiefMaster
fuente
Esto es asombroso Ahora puedo volver a empujar y tirar, pero antes tengo que configurarlo en sentido ascendente como git branch --set-upstream-to=origin/myBranch. +1 por tu respuesta.
AlokeT
En un nuevo repositorio, empujé una rama (no maestra), luego la cambié y obtuve el error durante la inserción. No encontré ganchos web. Me ejecutada git pull --rebase, tuvo que reajustar de nuevo y fue capaz de empujar la rama. Finalmente descubrí que mi rama se protegió.
CoolMind
60

El tamaño del archivo es importante. Hay un límite de ~ 120 MB para un solo archivo. En mi caso, .gitignore usando Visual Studio tenía el archivo en la lista, pero el archivo aún estaba confirmado. Al usar el git cli, podemos obtener más información detallada sobre el error.

el gancho previo a la recepción rechazado se debió al gran archivo. Básicamente validando el empuje.

Para resolverlo, eliminé el último commit usando:

git reset --soft HEAD~1

Luego excluí el archivo del commit.

Nota: Use HEAD ~ N para volver a N número de confirmaciones anteriores. (es decir, 3, 4) Utilice siempre el interruptor --soft para mantener los cambios en la carpeta

Espero eso ayude.

ozkary
fuente
Esto ayudó ya que mi problema era que un archivo de volcado de SQL no deseado (155mb en tamaño de archivo) estaba siendo empujado (por accidente).
Mehrdad Dastgir
1
El límite de tamaño de archivo depende de su proveedor de alojamiento. GitHub tiene un límite de alrededor de ese tamaño, para otros varía, y git autohospedado naturalmente no tiene tales límites.
1615903
1
¿Qué haces si ya tienes varias confirmaciones después del rechazo? este es mi caso, tengo un archivo grande no deseado (627 MB) en una de las confirmaciones anteriores antes de intentar presionar para repo
leeCoder
Tuve un archivo CSV que se subió por accidente. Entonces, en mi caso, el error se debió a eso.
tonhozi
Si tiene varias confirmaciones, aumente el índice para restablecer la cabeza a esa confirmación. Por ejemplo, use HEAD ~ 3 para volver a tres confirmaciones anteriores. Utilice siempre el interruptor --soft para mantener los cambios en la carpeta.
ozkary
13

Esto puede deberse a que no tenía el derecho de acceso para enviar una confirmación a una rama como master. Puede pedirle al mantenedor que le otorgue el derecho de enviar confirmaciones.

flahsy
fuente
Creo que esto es correcto, pero lo interesante es que VS parece estar tratando de empujar a la rama principal, no el nombre real de la rama al control remoto. Entonces, si la rama principal está protegida, esto parece estar ocurriendo, pero no parece haber ninguna forma de corregir esto en VS y debe cambiar a la línea cmd.
Mark
9

En mi caso recibí este mensaje porque la rama estaba marcada como 'Protegida' en GitLab.

Dave de Jong
fuente
1
Consulte stackoverflow.com/a/28832644/2914140 o proyecto GitLab> Configuración> Repositorio, luego Protected Branchespara encontrarlo.
CoolMind
8

Recibí este mensaje cuando el servidor GitLab estaba experimentando algunos cambios. Al día siguiente, empujar funcionó bien. De todos modos, como otros señalaron, consulte con su responsable para asegurarse.

Thomm
fuente
1
Acabo de tener este problema y supongo que GitLab estaba haciendo cambios. Le dio 10 minutos y funcionó. No cambié nada.
woter324
Acabo de tener este problema también. Para cualquiera que quiera comprobar si este es el caso: status.gitlab.com
Renan Ferrari el
5

Tuve este problema al intentar fusionar cambios con un tamaño de archivo mayor que el que permitía el repositorio remoto (en mi caso, era GitHub)

serup
fuente
2
En mi caso, incluso después de eliminar el archivo, GitHub todavía se quejaba ... pero esta respuesta hizo el truco stackoverflow.com/questions/19573031/…
CodenameDuchess
5

Encontré este mismo problema.
Lo que me resolvió fue cambiar a otra rama y luego volver a la original.

No estoy seguro de cuál fue la causa del subrayado, pero esto lo solucionó.

shapiro yaacov
fuente
Tampoco pude ir a la nueva sucursal
zabop
3

Bitbucket : compruebe los permisos de sucursal en la configuración (puede estar en 'Denegar todo'). Si eso no funciona, simplemente clone su sucursal en una nueva sucursal local , envíe los cambios al control remoto (se creará una nueva sucursal remota) y cree un RP.

diman82
fuente
2

En caso de que ayude a alguien:

Tenía un repositorio en blanco sin una rama maestra para desproteger (en Gitlab), así que antes de ejecutar git push -u origin --all

  • Tuve que correr git push -u origin masterprimero
  • desproteger la rama maestra temporalmente
  • empujar el resto ( --all& --tags)
medmek
fuente
2

Me enfrenté al mismo error, al verificar que tenía acceso de desarrollador y no podía publicar una nueva sucursal. Agregar mayores derechos de acceso resolvió este problema. (Gitlab)

Sandra Pavan
fuente
2

Recibí este error con GitHub gist. Estaba tratando de empujar un commit con archivos en subdirectorios. Resultó que Gist solo puede tener archivos en el directorio raíz.

Sergej Popov
fuente
Tengo esto también. Resulta que el repositorio tenía el archivo "snippets\\csharp.json"que le dio problemas a git en Windows.
Carl Walsh
2

Elimine la opción de rama protegida o permita roles adicionales como desarrolladores o administradores para permitir que estos usuarios que experimentan este error hagan fusiones y empujen.

eTechman
fuente
1

En mi caso, tenemos enlaces para mensajes de confirmación, nuestro script del servidor acepta confirmaciones si tienen el formato especial para el mensaje de confirmación "<JIRA ID><Message>". (Engancha) rechaza la confirmación si el ticket de Jira respectivo no existe o si hay algunos símbolos especiales en el mensaje de confirmación. Me enfrento a este error cuando agrego /, [,> etc. en un mensaje de confirmación, eliminando eso funciona bien.

Aditya Deshmane
fuente
Es poco probable que esta respuesta ayude, ya que el póster original (y cualquier otra persona que visite en el futuro) tendrá un script diferente configurado como un enlace de recepción previa.
aronisstav
1

Esto realmente sucede cuando YACC está habilitado en el lado del servidor en BitBucket. YACC permite que los nombres de problemas de JIRA se mencionen en el mensaje de confirmación. Por lo tanto, cada vez que confirme algo al menos, mantenga su número JIRA en el mensaje de confirmación y, además, puede agregar su propio mensaje.

Agnel Amodia
fuente
1

Estaba usando GitKraken e hicimos una rama local, luego fusionamos dos ramas remotas en ella y luego intentamos empujar la rama local al origen. No funcionó con el mismo mensaje de error.

La solución fue crear la rama local y empujarla primero al origen y luego hacer la fusión.

Ir
fuente
1

Problema: "PUSH falló las referencias / cabeza / - gancho previo a la recepción rechazado"

Me he enfrentado al problema de no poder impulsar mis cambios a mi rama de origen y cualquier cosa para dominar la rama de un repositorio de proyecto particular ya que el tamaño de ese repositorio superaba el límite estricto de 2 GB. Estaba arrojando el error. Esto se debe a que, sin saberlo, enviamos los datos de prueba a bitbucket desde otras ramas de prueba.

PUSH Refs fallidos / cabeza / - gancho de pre-recepción rechazado

Así que la comprobación probada es la misma con otros repositorios de proyectos y no estaban teniendo ningún problema.

Reparar:

Mi colega notó que cuando clonamos el proyecto localmente, el tamaño del proyecto era de 110 MB. Entonces, comenzamos a limpiar las ramas que fusionamos anteriormente y las ramas activas que ya no son necesarias. Una vez que se realizó la limpieza para un par de sucursales, nos dimos cuenta de que el tamaño del repositorio bajó drásticamente de 2GB a 120MB. Luego intentamos enviar los cambios a mi rama y funcionó.

Dugini Vijay
fuente
1

En mi caso, tenía un nuevo repositorio, empujé una rama ('UCA-46', no 'maestro'), la volví a armar, presioné a la fuerza nuevamente y obtuve el error. No existían ganchos web. Me ejecutada git pull --rebasecomo @ThiefMaster aconsejó, tuvo que reajustar de nuevo y fue capaz de empujar la rama. Pero esa era una forma extraña y difícil.

Luego vi que el gancho de pre-recepción de error de inserción de Git disminuyó . Descubrí que mi rama se protegió . Quité la protección y pude forzar nuevamente.

ingrese la descripción de la imagen aquí

CoolMind
fuente
0

Obtuve esto cuando intentaba pasar a una instancia de dokku. Resulta que el disco estaba lleno en mi servidor.

Corrió: du -f

Y el resultado fue:

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% /
frmdstryr
fuente
0

Para mí, la autorización en el servidor git remoto resuelve el problema. ingrese la descripción de la imagen aquí

shdr
fuente
0

En mi caso, es porque accidentalmente agregué un archivo gigante a mi inserción no comprometida y no pude deshacerme de él sin importar qué extracción, reinicio o ejecución hiciera después.

mi solución sucia pero viable es cambiar el nombre del directorio actual, volver a clonar el directorio a local y reflejar los cambios manualmente en el directorio local reclonado ...

No suena bien pero funciona ...

Jeffrey Ng
fuente
1
Me enfrenté al mismo problema y usé $ git reset --soft HEAD ~ 1 como lo que @ozkary sugirió ayudó.
jarrettyeo
0

El error para mí fue que el proyecto no tenía ninguna rama creada, y mi rol era desarrollador, por lo que no pude crear ninguna rama, ¡solicite que me otorguen los permisos pertinentes y todo en orden ahora!

Manuel Alanis
fuente
0

masterAún no existe una rama predeterminada (por ejemplo ) para su control remoto. Entonces, primero debe crear una mastersucursal en el servidor remoto de git (por ejemplo, crear un README.mdarchivo predeterminado ) y luego intentar pushtodas sus sucursales locales existentes con este comando:

git push -u origin --all
Duc Filan
fuente
0

Para mí, todo funcionaba bien hasta que Bitbucket cambió automáticamente su política hoy (21 de abril de 2020). Esto se alinea con una nueva característica recientemente presentada hoy llamada Workspaces , por lo que sospecho que tiene algo que ver con eso.

Solución alternativa : I (como administrador) seguí las instrucciones para agregar la dirección de correo electrónico a los usuarios en la interfaz de usuario (puede encontrar el correo electrónico que está utilizando)git config --list

ingrese la descripción de la imagen aquí

Jas
fuente
-7

Especificar una versión de node.js puede resolver el problema como

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
Descifrador
fuente