Skip to main content

Efetuar push de um branch bloqueado pela proteção por push

O recurso de proteção por push de secret scanning protege proativamente contra segredos vazados em seus repositórios. Você pode resolver pushes bloqueados e, depois que o segredo detectado for removido, poderá enviar alterações por push para o branch de trabalho pela linha de comando ou interface do usuário da Web.

Quem pode usar esse recurso?

Os Alertas de verificação de segredo para parceiros são executados automaticamente em repositórios públicos e pacotes npm públicos para notificar os provedores de serviço sobre os segredos vazados do GitHub.com.

Os Alertas de verificação de segredo para usuários estão disponíveis gratuitamente em todos os repositórios públicos. As organizações que usam o GitHub Enterprise Cloud com uma licença do GitHub Advanced Security também podem habilitar alertas de verificação de segredo para usuários em seus repositórios privados e internos. Para obter mais informações, confira "Sobre a verificação de segredo" e "Sobre a Segurança Avançada do GitHub".

Para obter informações sobre como é possível testar o GitHub Advanced Security de forma gratuita, confira “Como configurar uma avaliação gratuita do GitHub Advanced Security”.

Sobre a proteção por push para secret scanning

O recurso de proteção por push de secret scanning ajuda a evitar vazamentos de segurança examinando os segredos antes de enviar alterações por push para o repositório. Quando você habilita a proteção por push na organização ou no repositório, a secret scanning também verifica a presença de segredos de alta confiança (identificados por uma taxa baixa de falsos positivos) nos pushes. A Secret scanning lista todos os segredos detectados para que o autor possa revisar os segredos e removê-los ou, se necessário, permitir que esses segredos sejam enviados por push. Para saber mais sobre segredos e provedores de serviços compatíveis com a proteção por push, confira "Padrões de digitalização de segredo".

Se você confirmar que um segredo é real, precisará remover o segredo do branch, de todos os commits em que ele aparece, antes de efetuar push novamente.

Dica Se o GitHub bloquear um segredo que você acredita ser seguro para push, permita o segredo e especifique o motivo pelo qual ele deve ser permitido. Para obter mais informações sobre como ignorar a proteção por push para um segredo, confira "Permitir que um segredo bloqueado seja enviado por push" e "Ignorar a proteção por push para um segredo" para a linha de comando e a interface do usuário da Web, respectivamente.

Os proprietários da organização podem fornecer um link personalizado que será incluído na mensagem de GitHub Enterprise Cloud quando o push for bloqueado. Esse link personalizado pode conter recursos e conselhos específicos para sua organização e suas políticas.

Resolver um push bloqueado na linha de comando

Quando você tentar efetuar push de um segredo compatível para um repositório ou uma organização com a secret scanning como uma proteção por push habilitada, o GitHub bloqueará o push. Você pode remover o segredo do branch ou seguir uma URL fornecida para permitir o push.

Observações:

  • Se a configuração do Git der suporte a pushes para vários branches e não apenas para o branch atual, o push poderá ser bloqueado devido a referências adicionais e não intencionais serem enviadas por push. Para obter mais informações, confira as opções push.default na documentação do Git.
  • Se secret scanning atingir o tempo limite após o push, GitHub ainda executará uma verificação dos seus commits para segredos após o push.

Se o segredo bloqueado tiver sido introduzido pelo commit mais recente em seu branch, você poderá seguir as diretrizes abaixo.

  1. Remova o segredo do código.
  2. Confirme as alterações usando git commit --amend.
  3. Efetue o push das alterações com git push.

Você também poderá remover o segredo se ele aparecer em uma confirmação anterior no histórico do Git.

  1. Use git log para determinar qual commit exibido no erro de push veio primeiro no histórico.
  2. Inicie uma troca de base interativa com git rebase -i <commit-id>~1. é a ID do commit da etapa 1.
  3. Identifique seu commit para editar alterando pick para edit na primeira linha do texto que aparece no editor.
  4. Remova o segredo do código.
  5. Faça o commit da alteração com git commit --amend.
  6. Execute git rebase --continue para concluir a troca de base.

Resolver um commit bloqueado na interface do usuário da Web

Quando você usa a interface do usuário da Web para tentar fazer commit de um segredo com suporte em um repositório ou uma organização com a verificação de segredo como uma proteção por push habilitada, o GitHub bloqueará o commit.

Você verá uma caixa de diálogo com informações sobre a localização do segredo, bem como opções que permitem enviar o segredo por push. O segredo também será sublinhado no arquivo para que você possa encontrá-lo facilmente.

Para resolver um commit bloqueado na interface do usuário da Web, você precisará remover o segredo do arquivo ou usar as opções exibidas na caixa de diálogo para permitir o segredo. Para saber mais sobre como ignorar a proteção por push pela interface do usuário da Web, confira "Proteção por push para repositórios e organizações".

Se você confirmar que um segredo é real, precisará remover o segredo do arquivo. Depois de remover o segredo, você poderá confirmar suas alterações.