Skip to main content

Administrar una regla de protección de rama

Puede crear una regla de protección de rama a fin de aplicar determinados flujos de trabajo para una o varias ramas, como exigir una revisión de aprobación o pasar comprobaciones de estado para todas las solicitudes de incorporación de cambios combinadas en la rama protegida.

¿Quién puede utilizar esta característica?

People with admin permissions or a custom role with the "edit repository rules" permission to a repository can manage branch protection rules.

Las ramas protegidas están disponibles en repositorios públicos con GitHub Free y GitHub Free para las organizaciones. Las ramas protegidas también están disponibles en repositorios públicos y privados con GitHub Pro, GitHub Team, GitHub Enterprise Cloud y GitHub Enterprise Server.

Acerca de las reglas de protección de rama

Puede crear una regla de protección de rama en un repositorio para una rama específica, todas las ramas o cualquier rama que coincida con un patrón de nombre que especifique con la sintaxis fnmatch. Por ejemplo, para proteger todas las ramas que contengan la palabra release, puede crear una regla de rama para *release*.

Puede crear una regla para todas las ramas actuales y futuras de la repositorio con la sintaxis de comodín *. Como GitHub usa la marca File::FNM_PATHNAME para la sintaxis File.fnmatch, el carácter comodín * no coincide con los separadores de directorios (/). Por ejemplo, qa/* coincidirá con todas las ramas que comienzan por qa/ y que contienen una sola barra diagonal, pero no coincidirá con qa/foo/bar. Puedes incluir cualquier número de barras diagonales después de qa con qa/**/*, que coincidiría, por ejemplo, con qa/foo/bar/foobar/hello-world. También puedes extender la cadena qa con qa**/**/* para que la regla sea más inclusiva.

Para más información sobre las opciones de sintaxis, consulta la documentación de fnmatch.

Nota: No todas las expresiones de la sintaxis fnmatch se admiten en las reglas de protección de ramas. Ten presente las siguientes consideraciones:

  • No se puede usar el carácter de barra diagonal inversa (\) como carácter de comillas, ya que GitHub no admite el uso de barras diagonales inversas en las reglas de protección de ramas.
  • Puedes especificar juegos de caracteres entre corchetes ([]), pero actualmente no puedes complementar un conjunto con el operador ^ (por ejemplo, [^charset]).
  • Aunque GitHub admite File::FNM_PATHNAME en la sintaxis de fnmatch, File::FNM_EXTGLOB no se admite.

Si un repositorio tiene varias reglas de rama protegida que afectan las mismas ramas, las reglas que incluyen el nombre de una rama específica tienen la mayor prioridad. Si hay más de una regla de rama protegida que hace referencia al mismo nombre de rama específico, entonces la regla de rama creada primera tendrá la prioridad más alta.

Las reglas de rama protegida que mencionen un carácter especial, como *, ? o ], se aplican en el orden en el que se hayan creado, por lo que las reglas más antiguas con estos caracteres tienen una prioridad más alta.

Para crear una excepción a una regla de rama existente, puedes crear una nueva regla de protección de rama que sea una prioridad superior, como una regla de rama para un nombre de rama específico.

Para más información sobre cada una de las opciones de protección de rama disponibles, consulta "Acerca de las ramas protegidas".

Nota: Solo se puede aplicar una regla de protección de rama única a la vez, lo que significa que puede ser difícil saber cómo y qué regla se aplicará cuando varias versiones de una regla tengan como destino la misma rama. Además, puedes crear un conjunto de reglas único que se aplique a varios repositorios de una organización. Para información sobre una alternativa a las reglas de protección de ramas, consulta "Acerca de los conjuntos de reglas".

Crear una regla de protección de rama

Cuando creas una regla de rama, la rama que especifiques no tendrá que en el repositorio aún.

Nota: Los actores solo se pueden agregar para omitir listas cuando el repositorio pertenece a una organización.

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la sección de "Código y automatización" de la barra lateral, haga clic en Ramas .

  4. Junto a "Reglas de protección de rama", haga clic enAgregar regla.

  5. Debajo del "Patrón del nombre de la rama", teclea el nombre de la rama o el patrón que quieras proteger.

  6. Opcionalmente, habilita las solicitudes de cambios requeridas.

    Note

    Si seleccionas Descartar aprobaciones de solicitudes de incorporación de cambios obsoletas cuando se insertan nuevas confirmaciones o Requerir aprobación de la inserción revisable más reciente, se producirá un error al crear manualmente la confirmación de combinación para una solicitud de incorporación de cambios e insertarla directamente en una rama protegida, a menos que el contenido de la combinación coincida exactamente con la combinación generada por GitHub para la solicitud de incorporación de cambios.

    Además, con esta configuración, las revisiones aprobadas se descartarán por obsoletas si la base de combinación introduce nuevos cambios después de enviar la revisión. La base de combinación es la confirmación que es el último antecesor común entre la rama de tema y la rama base. Si cambia la base de combinación, la solicitud de incorporación de cambios no se puede combinar hasta que alguien apruebe el trabajo de nuevo.

    • En "Proteger las ramas coincidentes", seleccione Exigir una solicitud de incorporación de cambios antes de la combinación.

    • Opcionalmente, para requerir aprobaciones antes de que se pueda combinar una solicitud de incorporación de cambios, selecciona Requerir aprobaciones.

      Selecciona el menú desplegable Número necesario de aprobaciones antes de la combinación y, luego, selecciona el número de revisiones de aprobación que quiera solicitar en la rama.

    • Opcionalmente, para descartar una revisión de aprobación de la solicitud de incorporación de cambios cuando una confirmación que modifica el código se inserta en la rama, seleccione Descartar las aprobaciones de solicitud de incorporación de cambios obsoletas cuando se inserten confirmaciones nuevas.

    • Opcionalmente, para exigir una revisión de un propietario del código cuando la solicitud de incorporación de cambios afecte a código que tenga un propietario designado, seleccione Exigir la revisión de los propietarios del código. Ten en cuenta que si el código tiene varios propietarios, una aprobación de cualquiera de los propietarios del código será suficiente para cumplir este requisito. Para obtener más información, vea «Acerca de los propietarios de código».

    • Opcionalmente, para permitir que actores concretos inserten código en la rama sin crear solicitudes de incorporación de cambios cuando es obligatorio, selecciona Permitir que actores específicos omitan las solicitudes de incorporación de cambios necesarias. Posteriormente, busca y selecciona los actores a quienes se les debería permitir omitir la creación de una solicitud de incorporación de cambios.

    • Opcionalmente, si el repositorio forma parte de una organización, seleccione Restringir quién puede descartar las revisiones de una solicitud de incorporación de cambios. Posteriormente, en el campo de búsqueda, busca y selecciona los actores a quienes se les permite descartar las revisiones de solicitudes de incorporación de cambios. Para obtener más información, vea «Descartar una revisión de solicitud de extracción».

    • De manera opcional, si quieres exigir que alguien distinto de la última persona que hizo inserciones en una rama apruebe una solicitud de cambios antes de la combinación, selecciona Requerir aprobación de la inserción revisable más reciente. Para obtener más información, vea «Acerca de las ramas protegidas».

  7. Opcionalmente, habilita las verificaciones de estado requeridas. Para obtener más información, vea «Acerca de las verificaciones de estado».

    • Seleccione Exigir que se superen comprobaciones de estado antes de la combinación.
    • Opcionalmente, para garantizar que las solicitudes de incorporación de cambios se prueban con el código más reciente en la rama protegida, seleccione Exigir que las ramas estén actualizadas antes de la combinación.
    • En el campo de búsqueda, busca comprobaciones de estado y selecciona las que quieras exigir.
  8. Opcionalmente, seleccione Exigir la resolución de la conversación antes de la combinación.

  9. Opcionalmente, seleccione Exigir confirmaciones con firma.

  10. Opcionalmente, seleccione Exigir historial lineal.

  11. Opcionalmente, para combinar las solicitudes de incorporación de cambios con una cola de fusión mediante combinación, seleccione Exigir cola de fusión mediante combinación. Para más información sobre los métodos de fusión, consulta "Administración de una cola de fusión mediante combinación".

  12. Opcionalmente, para elegir en qué entornos se deben implementar correctamente los cambios antes de la combinación, seleccione Exigir que las implementaciones se realicen correctamente antes de la combinación y, después, seleccione los entornos.

  13. Opcionalmente, haz que la rama sea de solo lectura.

    • Selecciona Bloquear rama.
    • Opcionalmente, para permitir la sincronización de bifurcación, activa Permitir sincronización de bifurcación.
  14. Seleccione No permitir la omisión de la configuración anterior.

  15. Opcionalmente, habilitan las restricciones de rama.

    • Seleccione Restringir quién puede realizar inserciones en a las ramas coincidentes.
    • Opcionalmente, para restringir también la creación de ramas coincidentes, selecciona Restringir inserciones que creen ramas coincidentes.
    • Busca y selecciona las personas, equipos o aplicaciones que tendrán permiso para subir información a la rama protegida o crear una rama coincidente.
  16. Opcionalmente, en "Reglas que se aplican a todos, incluidos los administradores", seleccione Permitir inserciones forzadas.

    Posteriormente, elige quién puede enviar cambios a la fuerza en la rama.

    • Seleccione Todos para permitir que todos los que tengan al menos permisos de escritura en el repositorio realicen inserciones forzadas en la rama, incluidos los que tengan permisos administrativos.
    • Selecciona Especificar quién puede realizar inserciones forzadas para permitir que solo actores concretos realicen inserciones forzadas en la rama. A continuación, busca y selecciona esos actores.

    Para más información sobre las inserciones forzadas, vea "Acerca de las ramas protegidas".

  17. Opcionalmente, seleccione Permitir eliminaciones.

  18. Haga clic en Crear.

Editar una regla de protección de rama

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la sección de "Código y automatización" de la barra lateral, haga clic en Ramas .

  4. A la derecha de la regla de protección de rama que quiera editar, haga clic en Editar.

  5. Haz los cambios que desees en la regla de protección de rama.

  6. Haga clic en Guardar cambios.

Borrar una regla de protección de rama

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la sección de "Código y automatización" de la barra lateral, haga clic en Ramas .

  4. A la derecha de la regla de protección de rama que quiera eliminar, haga clic en Eliminar.