Solucione el error de GitLab: "¿no puede insertar código en ramas protegidas en este proyecto"?

327

Tengo un problema cuando empujo mis códigos a git mientras tengo acceso de desarrollador en mi proyecto, pero todo está bien cuando tengo acceso maestro. ¿De dónde viene el problema? ¿Y como arreglarlo?

Mensaje de error:

error: no está permitido insertar código en ramas protegidas en este proyecto.
...
error: no se pudieron insertar algunas referencias para ...

Fachrein Rachim Muhamad
fuente
La respuesta de Hcorg es una buena solución. Hay otro problema con eso. Si el proyecto acaba de crear y aún no tiene sucursal. Si hace clic en "Ramas protegidas", redirigirá a la página de inicio del proyecto. Crear una rama funcionará.
pdwjun
Consulte también stackoverflow.com/a/61964599/6309 , con GitLab 13.0 (mayo de 2020), donde puede habilitar la protección de sucursal predeterminada a nivel de grupo.
VonC

Respuestas:

506

no hay problema, todo funciona como se esperaba.

En GitLab se pueden proteger algunas ramas. De manera predeterminada, solo los usuarios del Mantenedor / Propietario pueden comprometerse con sucursales protegidas (ver documentos de permisos ). masterla rama está protegida de forma predeterminada: obliga a los desarrolladores a emitir solicitudes de fusión para que los encargados del proyecto las validen antes de integrarlas en el código principal.

Puede activar y desactivar la protección en las sucursales seleccionadas en Configuración del proyecto (donde depende exactamente de la versión de GitLab; consulte las instrucciones a continuación).

En la misma página de configuración también puede permitir que los desarrolladores ingresen a las ramas protegidas. Con esta configuración git push --forceactivada , la protección se limitará a rechazar operaciones que requieran (rebase, etc.)

Desde GitLab 9.3

Vaya al proyecto: "Configuración" → "Repositorio" → "Expandir" en "Ramas protegidas"

ingrese la descripción de la imagen aquí

No estoy realmente seguro de cuándo se introdujo este cambio, las capturas de pantalla son de la versión 10.3.

Ahora puede seleccionar a quién se le permite fusionar o empujar en las ramas seleccionadas (por ejemplo: puede desactivar los empujes masteren absoluto, obligando a que todos los cambios en la rama se realicen a través de solicitudes de fusión). O puede hacer clic en "Desproteger" para eliminar por completo la protección de la rama.

Desde GitLab 9.0

De manera similar a GitLab 9.3, pero no es necesario hacer clic en "Expandir"; todo ya está expandido:

Vaya al proyecto: "Configuración" → "Repositorio" → desplácese hacia abajo hasta "Ramas protegidas".

ingrese la descripción de la imagen aquí

Pre GitLab 9.0

Proyecto: "Configuración" → "Ramas protegidas" (si al menos es 'Maestro' del proyecto dado).

Configuración → Ramas protegidas

Luego haga clic en "Desproteger" o "Los desarrolladores pueden presionar":

ingrese la descripción de la imagen aquí

Hcorg
fuente
No olvide que es posible que se requieran algunos permisos. Como se indica en docs.gitlab.com/ee/user/project/protected_branches.html , al menos 'Nivel de permiso maestro'. En mi caso, presionar una rueda de configuración solo muestra la opción 'Abandonar proyecto'.
CoolMind
1
Por alguna razón, de repente tuve que agregarme como usuario maestro para mi propio proyecto.
jgillich
3
Tengo este problema porque NO era miembro de mi PROPIO proyecto y ya presioné este proyecto ... Para cambiarlo, en el proyecto del tour, haga clic en el engranaje, Miembros, busque a su usuario, dele un rol y haga clic en "Agregar usuarios para proyectar ".
Loenix
Extraño, yo también, tuve que incluirme en un proyecto personal en gitlab.com
Thomas Decaux
1
Es bueno si usted es el único responsable o desarrollador, por lo que puede cambiar la configuración y jugar con ella. Pero si hay un equipo trabajando en el repositorio, entonces no es una buena práctica cambiar la protección del repositorio.
Mnemo
27

para GitLab Enterprise Edition 9.3.0

Por defecto, la rama maestra está protegida, así que desprotege :)

1-Seleccione su "proyecto"

2-Seleccione "Repositorio"

3-Seleccione "ramas"

4-Seleccione "Configuración del proyecto"

5 "ramas protegidas" haga clic para "expandir"

6-y luego haga clic en el botón "desproteger"

krekto
fuente
No tenía "ramas" porque todavía no creé ningún archivo en este repositorio. He creado Readme.md y aparecieron ramas.
Ikrom
1

He encontrado este error en "una rama vacía" en mi servidor local de gitlab. Algunas personas mencionaron que "no se puede presionar por primera vez en una rama vacía". Traté de crear un archivo README simple en el gitlab a través de mi navegador. ¡Entonces todo se arregló increíblemente y el problema se resolvió! Menciono que yo era el maestro y que la rama no estaba protegida.

Vahid F
fuente
Esto es extraño para mí y considero este problema como un error de gitlab. Es inaceptable para mí no tener permiso para ingresar a un repositorio vacío. Espero que los chicos de Git tengan una respuesta.
Vahid F
1

Solución simple para este problema: tener una conversación rápida con una persona que tenga el rol de propietario en gitlab. Puede empujar un archivo READ.md o similar para comenzar. Más tarde, todo estará funcionando como antes.

kris
fuente
Si es posible, intente obtener el rol de propietario en el repositorio. Una vez que tenga el rol de propietario, puede comprometerse directamente con el maestro. Es molesto pero preventivo no crear nuevos proyectos no deseados. No hay truco hasta que el propietario del repositorio empuje el primer archivo o tenga el rol de propietario. Espero que esto ayude.
kris
1

Estaba en Windows cuando apareció este problema.

El error es extraño porque ocurre antes de que pueda ingresar mi nombre de usuario y mi contraseña. ¿Qué pasa si había un caché o algo así? Lo busqué en línea y encontré esta respuesta en el foro de soporte de gitlab :

Abro "Panel de control => Cuentas de usuario => Administre sus credenciales => Credenciales de Windows" Encontré dos para https: //@github.com y uno era el usuario incorrecto. ¡Lo eliminé y en el siguiente "git push" me repitieron y proporcioné las credenciales correctas y funcionó! Algunas otras notas: esto podría haber sucedido con cualquier control remoto git.

En las credenciales de Windows, encontré dos entradas de GitLab para una cuenta antigua. ¡Elimino ambos y ahora funciona!

El panel:

ingrese la descripción de la imagen aquí

aloisdg se muda a codidact.com
fuente
@YanickSenn De nada. Perdí mucho tiempo en este caso. Me alegra que ayude.
aloisdg se muda a codidact.com
1

Esto se considera como características en Gitlab.

Maintainer / Ownerel acceso nunca puede forzar el empuje nuevamente para la rama predeterminada y protegida, como se indica en estos documentos ingrese la descripción de la imagen aquí

mochadwi
fuente
1
En realidad, esto no es desafortunado en absoluto. Definitivamente es algo bueno. Es una capa extra de protección.
Chiramisu
0

Experimenté el mismo problema en mi repositorio. Soy el maestro del repositorio, pero tuve ese error.

Desprotegí mi proyecto y luego lo volví a proteger, y el error desapareció.

Habíamos actualizado la versión de gitlab entre mi empuje anterior y el problemático. Supongo que esta actualización ha creado el error.

jean pierre huart
fuente
0

Las soluciones anteriores explican claramente cuál es el problema; cuando no tiene control sobre el repositorio, la mejor manera de enviar su código es crear una Bifurcación del repositorio original y enviar su código a este nuevo repositorio para que luego pueda pasarlo al original.

gogasca
fuente