Résoudre un push bloqué
Pour résoudre un push bloqué, vous devez supprimer le secret de tous les commits dans lesquels il apparaît.
- Si le secret a été introduit par votre dernier commit, consultez Supprimer un secret introduit par le dernier commit sur votre branche.
- Si le secret apparaît dans les commits précédents, consultez Supprimer un secret introduit par le dernier commit sur votre branche.
Supprimer un secret introduit par le dernier commit sur votre branche
- Supprimez le secret de votre code.
- Pour valider les modifications, exécutez
git commit --amend --all. Cela met à jour le commit d’origine qui a introduit le secret, au lieu de créer un nouveau commit. - Envoyer vos modifications avec
git push.
Supprimer un secret introduit par un commit antérieur sur votre branche
-
Examinez le message d’erreur qui s’est affiché lorsque vous avez tenté de pousser votre branche ; il répertorie tous les commits qui contiennent le 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 -
Ensuite, exécutez
git logafin d’afficher l’historique complet de tous les commits de votre branche, ainsi que leurs horodatages correspondants.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 -
Enregistrez et fermez l’éditeur pour démarrer le rebase interactif.
-
Supprimez le secret de votre code.
-
Ajoutez vos modifications à la zone de staging à l’aide de
git add ..Remarque
La commande complète est
git add .:- Il y a un espace entre
addet.. - Le point qui suit l’espace fait partie de la commande.
- Il y a un espace entre
-
Validez vos modifications à l’aide de
git commit --amend. -
Exécutez
git rebase --continuepour terminer la relocalisation. -
Envoyer vos modifications avec
git push.
Contournement de la protection Push
Remarque
Si vous ne voyez pas l’option permettant de contourner le blocage, vous devez supprimer le secret du commit ou soumettre une demande de « privilèges de contournement » afin de pouvoir pousser le secret bloqué. Consultez Demande de privilèges de contournement.
-
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.
-
Cliquez sur M’autoriser à pousser ce secret.
-
Retentez la poussée sur la ligne de commande dans un délai de trois heures. Si vous n’effectuez pas la poussée dans les trois heures, vous devrez répéter ce processus.
Demande de privilèges de contournement
- Si votre demande est approuvée, vous pouvez envoyer (push) la validation (ou les validations) contenant le secret au référentiel, ainsi que les validations futures qui contiennent le même secret.
- Si votre demande est refusée, vous devez supprimer le secret de toutes les validations avant d’envoyer (push) à nouveau. Pour obtenir des informations sur la manière de supprimer un secret bloqué, consultez Résoudre un push bloqué.
Lectures complémentaires
-
[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)