Skip to main content

Gerenciar uma regra de proteção de branch

Você pode criar uma regra de proteção de branch para impor determinados fluxos de trabalho para um ou mais branches, como exigir uma revisão de aprovação ou que as verificações de status sejam aprovadas para todas as solicitações de pull mescladas no branch protegido.

Quem pode usar esse recurso?

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

As ramificações protegidas estão disponíveis em repositórios públicos com GitHub Free e GitHub Free para organizações. As ramificações protegidas também estão disponíveis em repositórios públicos e privados com GitHub Pro, GitHub Team, GitHub Enterprise Cloud e GitHub Enterprise Server.

Sobre as regras de proteção do branch

Você pode criar uma regra de proteção de branch em um repositório para um branch específico, para todos os branches ou para qualquer branch que corresponda a um padrão de nome especificado com a sintaxe fnmatch. Por exemplo, para proteger os branches que contêm a palavra release, você pode criar uma regra de branch para *release*.

É possível criar uma regra para todos os branches atuais e futuros no repositório com a sintaxe de caractere curinga *. Como o GitHub usa o sinalizador File::FNM_PATHNAME para a sintaxe File.fnmatch, o curinga * não corresponde aos separadores de diretório (/). Por exemplo, qa/* corresponderá a todos os branches que começam com qa/ e que contêm uma barra "/", mas não corresponderá a qa/foo/bar. Você pode incluir qualquer quantidade de barras "/" após qa com qa/**/*, o que corresponderá, por exemplo, a qa/foo/bar/foobar/hello-world. Você também pode estender a cadeia de caracteres qa com qa**/**/* para tornar a regra mais inclusiva.

Para obter mais informações sobre as opções de sintaxe, confira a documentação de fnmatch.

Observação: nem todas as expressões da sintaxe fnmatch são compatíveis com as regras de proteção de ramificação. Esteja ciente das seguintes restrições:

  • Não é possível usar a barra invertida (\) como um caractere de citação, pois o GitHub não é compatível com o uso de barras invertidas nas regras de proteção de ramificação.
  • Você pode especificar conjuntos de caracteres entre colchetes ([]), mas atualmente não pode complementar um conjunto com o operador ^ (por exemplo, [^charset]).
  • Embora o GitHub seja compatível com File::FNM_PATHNAME na sintaxe fnmatch, File::FNM_EXTGLOB não é compatível.

Se um repositório tiver várias regras de branch protegido que afetem os mesmos branches, as regras que incluírem um nome de branch específico terão a prioridade mais alta. Se houver mais de uma regra de branch protegido que faça referência ao mesmo nome de branch específico, a regra de branch criada primeiro terá a prioridade mais alta.

As regras de branch protegido que mencionam um caractere especial, como *, ? ou ], são aplicadas na ordem em que foram criadas, de modo que as regras mais antigas com esses caracteres tenham uma prioridade mais alta.

Para criar uma exceção a uma regra de branch existente, você pode criar outra regra de proteção de branch que tenha prioridade superior, como uma regra para um nome de branch específico.

Para obter mais informações sobre cada uma das configurações de proteção de branch disponíveis, confira "Sobre branches protegidos".

Observação: somente uma regra de proteção de branch pode ser aplicada por vez, o que significa que pode ser difícil saber qual regra é aplicada quando várias versões de uma regra são direcionadas ao mesmo branch. Além disso, o ideal é criar um só conjunto de regras que se aplica a vários repositórios de uma organização. Para obter informações sobre uma alternativa às regras de proteção de branch, confira "Sobre os conjuntos de regras".

Criar uma regra de proteção de branch

Ao criar uma regra de branch, o branch que você especificar ainda não existe no repositório.

Nota: os atores só podem ser adicionados a listas de bypass quando o repositório pertence a uma organização.

  1. Em GitHub, acesse a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na seção "Código e automação" da barra lateral, clique em Branches.

  4. Ao lado de "Regras de proteção do branch", clique em Adicionar regra.

  5. Em "Padrão do nome do branch", digite o nome de branch ou padrão que você deseja proteger.

  6. Opcionalmente, habilite os pull requests necessários.

    Note

    Se você selecionar Ignorar aprovações de pull request obsoletas quando novas confirmações forem transmitidos e/ou Exigir aprovação do push revisável mais recente, a criação manual do commit de mesclagem de uma pull request e sua transmissão direta em um branch protegido apresentará falha, a menos que o conteúdo da mesclagem corresponda exatamente à mesclagem gerada por GitHub para a pull request.

    Além disso, com essas configurações, a aprovação de revisões será ignorada como obsoleta se a base de mesclagem introduzir novas alterações depois que a revisão for enviada. A base de mesclagem é o commit que é o último ancestral comum entre o branch do tópico e o branch base. Se a base de mesclagem for alterada, a solicitação de pull não poderá ser mesclada até que alguém aprove o trabalho novamente.

    • Em "Proteger os branches correspondentes", selecione Exigir uma solicitação de pull antes de fazer a mesclagem.

    • Opcionalmente, para exigir aprovações para que uma solicitação de pull possa ser mesclada, selecione Exigir aprovações.

      Selecione o menu suspenso Número de aprovações obrigatórias antes da mesclagem e clique no número de aprovações de revisões que deseja exigir no branch.

    • Opcionalmente, para ignorar uma revisão de aprovação de solicitação de pull quando um commit de modificação de código for enviado por push para o branch, selecione Ignorar aprovações de solicitações de pull obsoletas quando novos commits forem enviados por push.

    • Opcionalmente, para exigir a revisão de um proprietário do código quando a solicitação de pull afetar o código que tem um proprietário designado, selecione Exigir revisão de Proprietários do Código. Observe que, se o código tiver vários proprietários, uma aprovação de qualquer um dos proprietários de código será suficiente para atender a esse requisito. Para obter mais informações, confira "Sobre os proprietários de código".

    • Opcionalmente, para permitir que atores específicos efetuem push do código para o branch sem criar solicitações de pull quando necessário, selecione Permitir que atores específicos ignorem as solicitações de pull necessárias. Em seguida, pesquise e selecione os atores que devem ter permissão para ignorar a criação de uma solicitação de pull.

    • Opcionalmente, se o repositório fizer parte de uma organização, selecione Restringir quem pode ignorar as revisões de solicitação de pull. No campo pesquisar, procure e selecione os atores que têm permissão para ignorar as revisões de PR. Para obter mais informações, confira "Ignorar uma revisão de pull request".

    • Opcionalmente, para exigir que alguém que não seja a última pessoa que efetuou o push para um branch aprove uma solicitação de pull antes da mesclagem, selecione Exigir aprovação do push revisável mais recente. Para obter mais informações, confira "Sobre branches protegidos".

  7. Opcionalmente, habilite as verificações de status obrigatórias. Para obter mais informações, confira "Sobre verificações de status".

    • Selecione Exigir a aprovação de verificações de status antes da mesclagem.
    • Opcionalmente, para garantir que as solicitações de pull sejam testadas com o código mais recente no branch protegido, selecione Exigir que os branches estejam atualizados antes da mesclagem.
    • No campo para pesquisar, pesquise verificações de status, selecionando as verificações que você deseja exigir.
  8. Opcionalmente, selecione Exigir a resolução de conversas antes da mesclagem.

  9. Opcionalmente, selecione Exigir commits assinados.

  10. Opcionalmente, selecione Exigir histórico linear.

  11. Opcionalmente, para mesclar as solicitações de pull usando uma fila de mesclagem, selecione Exigir fila de mesclagem. Para obter mais informações sobre filas de mesclagem, confira "Como gerenciar uma fila de mesclagem".

  12. Opcionalmente, para escolher os ambientes nos quais as alterações precisam ser implantadas com sucesso antes da mesclagem, selecione Exigir que as implantações seja feitas com sucesso antes da mesclagem e selecione os ambientes.

  13. Opcionalmente, torne o branch somente leitura.

    • Selecione Bloquear branch.
    • Opcionalmente, para permitir a sincronização de fork, selecione Permitir sincronização do fork.
  14. Opcionalmente, selecione Não permitir ignorar as configurações acima.

  15. Opcionalmente, habilite as restrições de branch.

    • Selecione Restringir quem pode efetuar push em branches correspondentes.
    • Opcionalmente, para restringir também a criação de branches correspondentes, selecione Restringir pushes que criam branches correspondentes.
    • No campo para pesquisar, pesquise e selecione pessoas, equipes ou aplicativos que tenham permissão para fazer push no branch protegido ou criar um branch correspondente.
  16. Opcionalmente, em "Regras aplicadas a todos, incluindo administradores", selecione Permitir pushes forçados.

    Escolha quem pode fazer push forçado no branch.

    • Selecione Todos para permitir que todos com, no mínimo, permissões de gravação no repositório efetuem pushes forçados no branch, incluindo aqueles com permissões de administrador.
    • Selecione Especificar quem pode efetuar push forçado para permitir que apenas atores específicos efetuem push forçado no branch. Em seguida, procure e selecione esses atores.

    Para obter mais informações sobre pushes forçados, confira "Sobre branches protegidos".

  17. Opcionalmente, selecione Permitir exclusões.

  18. Clique em Criar.

Editar uma regra de proteção de branch

  1. Em GitHub, acesse a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na seção "Código e automação" da barra lateral, clique em Branches.

  4. À direita da regra de proteção de branch que deseja editar, clique em Editar.

  5. Faça as alterações desejadas na regra de proteção do branch.

  6. Clique em Salvar alterações.

Excluir as regras de proteção do branch

  1. Em GitHub, acesse a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na seção "Código e automação" da barra lateral, clique em Branches.

  4. À direita da regra de proteção de branch que deseja excluir, clique em Excluir.