Git push error pre-recepción gancho rechazado

168

Ejecuté el servidor gitlabhq rails en una máquina virtual, siguiendo 1-6 pasos de este tutorial https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md e inicia el comando de ejecución del servidor rails sudo -u git -H bundle exec rails s -e production. Después de eso, creé un usuario, usando herramientas de administración y creé un nuevo proyecto para este usuario. Entonces estoy tratando de llevar el proyecto existente a este repositorio como siempre. Pero en el último paso, git push origin masterfalla con el error

[remoto rechazado] maestro -> maestro (gancho de pre-recepción rechazado)

Información adicional:

1) No he activado el usuario (propietario del proyecto) a través del enlace de activación por correo electrónico, porque no he configurado el servicio de correos en el lado del servidor y no encontré instrucciones sobre cómo hacerlo en este manual.

2) El servidor de Gitlab genera consejos sobre cómo impulsar el proyecto al repositorio y no hay ningún repositories/camino. Quiero decir que genera en git@mygitlabhost:user/repo.gitlugar de git@mygitlabhost:repositories/user/repo.gitcuál es correcto.

3) Cuando trataba de depurarlo, abrí pre-receivela escritura dentro de recompra en el servidor y trató de variables de salida (hay 3 de ellos): refs = ARGF.read, key_id = ENV['GL_ID']y repo_path = Dir.pwde hallado: que id_clave siempre está vacío. Quizás el problema esté aquí ... Si es así, por favor, dame sugerencias sobre cómo solucionarlo. Gracias

Hroft
fuente
15
Lo juro, hay al menos 1 persona en cada equipo de desarrollo de software que se despierta todos los días y piensa cómo hacer que la vida de otros desarrolladores sea mucho más difícil.
samayo
Parece que hay una respuesta muy popular que debe funcionar para la mayoría de las personas. Sin embargo, en mi caso, se recibió el mismo mensaje de Git Hub cuando accidentalmente hubo otro empuje que ya estaba en progreso desde otra máquina al intentar empujar.
Hack-R

Respuestas:

230

GitLab por defecto marca la masterrama como protected(Ver parte Protecting your codeen https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ why). Si es así en su caso, esto puede ayudar:

Abra su proyecto> Configuración> Repositorio y vaya a "Ramas protegidas", busque la rama "maestra" en la lista y haga clic en "Desproteger" e intente nuevamente.

a través de https://gitlab.com/gitlab-com/support-forum/issues/40

Para la versión 8.11 y superior, cómo hacerlo aquí: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users

Max Vyaznikov
fuente
8
La interfaz de usuario ha cambiado un poco: después del proyecto "Configuración", haga clic en la pestaña "Repositorio". Luego "Ramas protegidas"
Donn Lee
Estaba teniendo el mismo problema que OP y esta solución me funcionó, ¡gracias! Pero ahora me pregunto, ¿por qué? He estado usando gitlab por un tiempo y de repente tengo que hacer esto. ¿Qué cambió?
Andrew Lamarra
2
Dado que GitLab 8.11las opciones han cambiado un poco, verifique los detalles aquí
Arghya C
enfrentando el mismo problema. Aquí ni siquiera puedo empujar otra rama también. Aunque lo estoy presionando la primera vez.
Santosh Kadam
1
Quité sin protección, pero ¿qué pasará ahora? ¿Alguien más en el mundo puede trabajar en este repositorio?
Flutterer
14

Siguiente problema resuelto en mi máquina local:

A. Primero, asegúrese de estar utilizando los detalles de inicio de sesión correctos para conectarse al servidor Bitbucket (es decir, un nombre de usuario / contraseña / clave SSH que le pertenece) 

B. Luego, asegúrese de que el nombre / dirección de correo electrónico esté correctamente configurado en su configuración local de Git: establezca su configuración local de Git para la cuenta que está intentando ingresar (el cheque afirma que usted es la persona que confirmó los archivos) * Tenga en cuenta que esto distingue entre mayúsculas y minúsculas, tanto para el nombre como para la dirección de correo electrónico * También distingue entre espacios: algunas cuentas de empresa tienen espacios / caracteres adicionales en su nombre, por ejemplo. " Contractor/ space space(LDN)". Debe incluir el mismo número de espacios en su configuración que en Bitbucket Server. Verifique esto en el Bloc de notas si está atascado.

C. Si estaba usando la cuenta incorrecta, simplemente cambie las credenciales de su cuenta (nombre de usuario / contraseña / clave SSH) e intente presionar nuevamente.

D. De lo contrario, si su configuración local es incorrecta, deberá modificarla

Para Mac

open -a TextEdit.app ~/.gitconfig

NOTA: Tendrá que arreglar las confirmaciones anteriores que intentaba impulsar.

  1. Modifique su último compromiso:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Intenta volver a presionar tus commits:

    > git push
    
Maverick09
fuente
12

En mi caso, mi equipo llevó a crear un repositorio (el repositorio estaba vacío) y me asignó como desarrollador, así que cuando presioné el código directamente para dominar el error que estaba enfrentando ! [remote rejected] master -> master (pre-receive hook declined)Entonces, ¿cómo se solucionó que me asignó como mantenedor para que yo fue capaz de enviar el código directamente al maestro.

Saad Qamar
fuente
10

Parece que el problema es con algunos servicios, como sidekiq. Ejecutar sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productiongenera todos los problemas con config.

Hroft
fuente
2

Es posible que no tenga acceso de desarrollador al proyecto o rama maestra. Necesita acceso de desarrollo para impulsar un nuevo trabajo.

Nuevo trabajo que significa nuevas ramas y compromisos.

Vishav Premlall
fuente
2

Puede que no sea el caso, pero esta fue la solución a mi " gancho previo a la recepción rechazado error de " ":

Hay algunos repositorios que solo permiten modificaciones a través de Pull Request . Esto significa que tienes que

  1. Cree una nueva rama tomando como base la rama a la que desea enviar sus cambios.
  2. Comprometa y empuje sus cambios a la nueva sucursal.
  3. Abra una solicitud de extracción para fusionar su sucursal con la original.
Rocío García Luque
fuente
0

Debe agregar su clave ssh a su cuenta de git, si arroja un error, elimine la clave ssh anterior y cree una nueva clave ssh y luego agregue.

Hardik Hardiya
fuente
Eso no ayudó. :( Probado en ambas cuentas - root y myuser en vm y máquina local resp.
Hroft
comprueba git remote -v, ¿tu repositorio de git está agregado o no?
Hardik Hardiya
salidas 'git remote -v': origen git @ mygitlabhost: repositorios / usuario / repo.git (buscar) origen git @ mygitlabhost: repositorios / usuario / repo.git (push)
Hroft
Si está utilizando gitlab alojado, es probable que el problema esté de su lado. Solo inténtalo de nuevo unos minutos más tarde.
Erik Aronesty
0

He resuelto este problema cambiando remote 'origin' urla partir httpde gitprotocolo.git/config

zzxwill
fuente
0

Vaya a Configuración del proyecto -> Ganchos -> (Bajo) Ganchos de pre-recepción

Desactivar cp requiere referencia de problema en confirmaciones

Manoj
fuente
0

Me topé con el mismo error usando BitBucket. Tenía un repositorio local de Git del que quería hacer una copia de seguridad en línea, así que creé un nuevo repositorio desde mi cuenta de BitBucket (usando la interfaz web).

Después de correr git remote add origin [email protected]:StatMarianne/<a private repo>.git, corrí git push origin masteren vano (normalmente no uso la opción -ugit push porque no me importa escribir el repositorio completo y los nombres de las ramas al empujar y tirar).

El error decía:

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'

Pero mi sucursal local fue exitosamente empujada cuando corrí git push -u origin master (siguiendo estrictamente las instrucciones de BitBucket).

Me parece sorprendente, ya que -u ( --set-upstream) solo debería "agregar referencia ascendente (seguimiento) ..." De todos modos.

mkcor
fuente
-1

Me he enfrentado al mismo problema, esto se debe a que estoy empujando mi código directamente en la rama maestra y no tengo derechos para esto. Así que inserto mi código en una nueva rama y después de eso, creé una solicitud de extracción para fusionarme con el maestro.

ferozpuri
fuente