Resolving a blocked push
To resolve a blocked push, you must remove the secret from all of the commits it appears in.
- If the secret was introduced by your latest commit, see Removing a secret introduced by the latest commit on your branch.
- If the secret appears in earlier commits, see Removing a secret introduced by an earlier commit on your branch.
Removing a secret introduced by the latest commit on your branch
- Remove the secret from your code.
- To commit the changes, run
git commit --amend --all. This updates the original commit that introduced the secret instead of creating a new commit. - Push your changes with
git push.
Removing a secret introduced by an earlier commit on your branch
-
Examine the error message that displayed when you tried to push your branch, which lists all of the commits that contain the secret.
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 -
Next, run
git logto see a full history of all the commits on your branch, along with their corresponding timestamps.test-repo (test-branch)]$ git log commit 8053f7b27 (HEAD -> main) Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:03:37 2024 +0100 my fourth commit message commit 03d69e5d3 Author: Octocat <1000+octocat@users.noreply.github.com> Date: Tue Jan 30 13:02:59 2024 +0100 my third commit message commit 8728dbe67 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:01:36 2024 +0100 my second commit message commit 6057cbe51 Author: Octocat <1000+octocat@users.noreply.github.com 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 -
Save and close the editor to start the interactive rebase.
-
Remove the secret from your code.
-
Add your changes to the staging area using
git add ..Remarque
The full command is
git add .:- There is a space between
addand.. - The period following the space is part of the command.
- There is a space between
-
Commit your changes using
git commit --amend. -
Run
git rebase --continueto finish the rebase. -
Push your changes with
git push.
Bypassing push protection
Remarque
If you don't see the option to bypass a block, you should remove the secret from the commit, or submit a request for "bypass privileges" in order to push the blocked secret. See Requesting bypass privileges.
-
Accédez à l'URL renvoyée par GitHub quand votre envoi (push) a été bloqué, en tant que même utilisateur qui a effectué l’envoi (push). Si un autre utilisateur tente de visiter cette URL, il reçoit une erreur
404. -
Choisissez l’option qui décrit le mieux la raison pour laquelle vous devez être en mesure de pousser le secret.
-
Si le secret est utilisé uniquement dans des tests et ne représente aucune menace, cliquez sur Il est utilisé dans des tests.
-
Si la chaîne détectée n’est pas un secret, cliquez sur Il s’agit d’un faux positif.
-
Si le secret est réel, mais que vous avez l’intention de le corriger plus tard, cliquez sur Je le corrigerai plus tard.
Remarque
Vous devez spécifier une raison de contourner la protection push si l’analyse des secrets est activée dans le référentiel.
Lors d’une poussée vers un dépôt public pour lequel l’analyse des secrets n’est pas activée, vous êtes toujours protégé contre l’envoi (push) accidentel de secrets grâce à la protection push pour les utilisateurs, qui est activée par défaut pour votre compte d’utilisateur.
Avec la protection push pour les utilisateurs, GitHub bloque automatiquement les envois (push) vers les dépôts publics si ces envois contiennent des secrets pris en charge, mais vous n’avez pas besoin de spécifier une raison d’autoriser le secret, et GitHub ne génère pas d’alerte. Pour plus d’informations, consultez « Gestion de la protection push pour les utilisateurs ».
-
-
Click Allow me to push this secret.
-
Reattempt the push on the command line within three hours. If you have not pushed within three hours, you will need to repeat this process.
Requesting bypass privileges
-
Accédez à l'URL renvoyée par GitHub quand votre envoi (push) a été bloqué, en tant que même utilisateur qui a effectué l’envoi (push). Si un autre utilisateur tente de visiter cette URL, il reçoit une erreur
404. -
Sous « Ou demander des privilèges de contournement », ajoutez un commentaire. Par exemple, vous pouvez expliquer pourquoi vous pensez que le secret peut être transmis en toute sécurité, ou fournir le contexte de la demande de contournement du blocage.
-
Cliquez sur Envoyer la demande.
-
Vérifiez vos notifications par e-mail pour obtenir une réponse à votre demande. Une fois votre demande examinée, vous recevrez un e-mail vous informant de la décision.
- If your request is approved, you can push the commit (or commits) containing the secret to the repository, as well as any future commits that contain the same secret.
- If your request is denied, you need to remove the secret from all commits before pushing again. For information on how to remove a blocked secret, see Resolving a blocked push.