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.

A Secret scanning está disponível para os repositórios pertencentes a uma organização no GitHub Enterprise Server se a sua empresa tem uma licença do GitHub Advanced Security. Para obter mais informações, confira "Sobre secret scanning no GitHub Enterprise Server" e "Sobre a 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, a secret scanning também verifica os pushes em busca de segredos de alta confiança (aqueles identificados com uma baixa taxa de falsos positivos). 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 obter informações sobre segredos e provedores de serviços compatíveis com a proteção por push, confira "Padrões de Secret scanning".

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.

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 faixa na parte superior da página com informações sobre a localização do segredo e o segredo também será sublinhado no arquivo para que você possa encontrá-lo facilmente.

Captura de tela mostrando o commit na interface do usuário da Web bloqueada devido à proteção por push de verificação de segredo

Para resolver um commit bloqueado na interface do usuário da Web, você precisará remover o segredo do arquivo ou usar a lista suspensa Proteção contra bypass para permitir o segredo. Para obter mais informações sobre como ignorar a proteção por push pela interface do usuário da Web, confira "Proteger pushes com verificação secreta".

Se você confirmar que um segredo é real, precisará remover o segredo do arquivo. Depois de remover o segredo, a faixa na parte superior da página será alterada e informará que agora você pode fazer commit das suas alterações.