Resolvendo um push bloqueado
Para resolver um push bloqueado, você deve remover o segredo de todos os commits em que ele aparece.
- Se o segredo foi introduzido pela sua última alteração (commit), consulte Removendo um segredo introduzido pelo último commit em sua ramificação.
- Se o segredo aparecer em commits anteriores, veja Removendo um segredo introduzido por um commit anterior em sua ramificação..
Remover um segredo introduzido pelo commit mais recente em seu branch
- Remova o segredo do código.
- Para fazer commit das alterações, execute
git commit --amend --all. Isso atualiza o commit original que introduziu o segredo em vez de criar um novo commit. - Efetue o push das alterações com
git push.
Remover um segredo introduzido pelo commit anterior em seu branch
-
Examine a mensagem de erro exibida quando você tentou enviar por push sua ramificação, que lista todas as confirmações que contêm o segredo.
remote: —— GitHub Personal Access Token —————————————————————— remote: locations: remote: - commit: 8728dbe67 remote: path: README.md:4 remote: - commit: 03d69e5d3 remote: path: README.md:4 remote: - commit: 8053f7b27 remote: path: README.md:4 -
Em seguida, execute
git logpara ver um histórico completo de todas as confirmações em sua ramificação, juntamente com seus carimbos de data/hora correspondentes.test-repo (test-branch)]$ git log commit 8053f7b27 (HEAD -> main) Author: Octocat <[email protected] Date: Tue Jan 30 13:03:37 2024 +0100 my fourth commit message commit 03d69e5d3 Author: Octocat <[email protected]> Date: Tue Jan 30 13:02:59 2024 +0100 my third commit message commit 8728dbe67 Author: Octocat <[email protected] Date: Tue Jan 30 13:01:36 2024 +0100 my second commit message commit 6057cbe51 Author: Octocat <[email protected] Date: Tue Jan 30 12:58:24 2024 +0100 my first commit message -
Focusing only on the commits that contain the secret, use the output of
git logto identify which commit comes earliest in your Git history.- In the example, commit
8728dbe67was the first commit to contain the secret.
- In the example, commit
-
Start an interactive rebase with
git rebase -i <COMMIT-ID>~1.- For
<COMMIT-ID>, use the commit identified in step 3. For example,git rebase -i 8728dbe67~1.
- For
-
In the editor, choose to edit the commit identified in step 3 by changing
picktoediton the first line of the text.edit 8728dbe67 my second commit message pick 03d69e5d3 my third commit message pick 8053f7b27 my fourth commit message -
Salve e feche o editor para iniciar o trocar base interativo.
-
Remova o segredo do código.
-
Adicione suas alterações à área de preparação usando
git add ..Observação
O comando completo é
git add .:- Há um espaço entre
adde.. - O ponto que segue o espaço faz parte do comando.
- Há um espaço entre
-
Fazer commit de suas alterações usando
git commit --amend. -
Execute
git rebase --continuepara concluir a troca de base. -
Efetue o push das alterações com
git push.
Ignorando a proteção de push
Observação
Se você não vir a opção de ignorar um bloqueio, remova o segredo do commit ou envie uma solicitação para obter "privilégios para ignorar" para realizar o push do segredo bloqueado. Consulte Solicitação de privilégios de bypass.
-
Visite a URL que GitHub retorna quando o push foi bloqueado, pois o mesmo usuário que executou o push. Se um usuário diferente tentar visitar essa URL, ele receberá um erro
404. -
Escolha a opção que melhor descreve o motivo pelo qual você deve conseguir efetuar push do segredo.
-
Se o segredo for usado apenas em testes e não representar nenhuma ameaça, clique em Ele é usado em testes.
-
Se a cadeia de caracteres detectada não for um segredo, clique em É um falso positivo.
-
Se o segredo for real, mas você pretender corrigi-lo mais tarde, clique em Corrigirei mais tarde.
Observação
É necessário especificar um motivo para ignorar a proteção por push se o repositório tiver a varredura secreta habilitada.
Ao enviar por push para um repositório público que não tem a varredura secreta habilitada, você ainda está protegido contra envio acidental de segredos graças à proteção por push para usuários, que está ativadahabilitada por padrão para sua conta de usuário.
Com a proteção por push para usuários, o GitHub bloqueará automaticamente os envios para repositórios públicos se esses envios contiverem segredos com suporte, mas você não precisará especificar um motivo para permitir o segredo, e GitHub não gerará um alerta. Para saber mais, confira Proteção por push para usuários.
-
-
Clique em Permitir que eu efetue push deste segredo.
-
Tente efetuar push novamente na linha de comando em até três horas. Se você não efetuar push em até três horas, precisará repetir esse processo.
Solicitando privilégios de bypass
-
Visite a URL que GitHub retorna quando o push foi bloqueado, pois o mesmo usuário que executou o push. Se um usuário diferente tentar visitar essa URL, ele receberá um erro
404. -
Em "Ou solicitar privilégios para ignorar", adicione um comentário. Por exemplo, você pode explicar por que acredita que o segredo é seguro para envio por push ou fornecer o contexto sobre a solicitação para ignorar o bloqueio.
-
Clique em Enviar solicitação.
-
Verifique suas notificações por email para obter uma resposta à sua solicitação. Assim que sua solicitação for analisada, você receberá um email notificando a decisão.
- Se sua solicitação for aprovada, você poderá enviar por push a confirmação (ou confirmações) que contém o segredo para o repositório, bem como quaisquer confirmações futuras que contenham o mesmo segredo.
- Se sua solicitação for negada, você precisará remover a senha de todas as confirmações antes de realizar o push novamente. Para obter informações sobre como remover um segredo bloqueado, consulte Resolvendo um push bloqueado.
Leitura adicional
-
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api)