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 ..Nota:
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
Nota:
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.
-
Visita la dirección URL devuelta por GitHub cuando se bloquee la inserción como el mismo usuario que ha realizado la inserción. Si un usuario diferente intenta visitar esta dirección URL, recibirá un error de
404. -
Elija la opción que mejor describa por qué debería poder insertar el secreto.
-
Si el secreto solo se usa en pruebas y no supone ninguna amenaza, haga clic en Se usa en las pruebas.
-
Si la cadena detectada no es un secreto, haga clic en Es un falso positivo.
-
Si el secreto es real, pero piensa corregirlo más adelante, haga clic en Lo corregiré más adelante.
Nota:
Si el repositorio tiene habilitado el examen de secretos, debes especificar un motivo para omitir la protección contra el envío de cambios.
Al insertar en un repositorio público que no tiene habilitado el análisis de secretos, todavía está protegido de la inserción accidental de secretos gracias a la protección de inserción para usuarios, que está activado de manera predeterminada para su cuenta de usuario.
Con la protección de inserción para usuarios, GitHub bloqueará automáticamente las inserciones en repositorios públicos si estas inserciones contienen secretos admitidos, pero no es necesario especificar un motivo para permitir el secreto y GitHub no generará una alerta. Para más información, consulta Gestión de la protección de notificaciones para los usuarios.
-
-
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
-
Visita la dirección URL devuelta por GitHub cuando se bloquee la inserción como el mismo usuario que ha realizado la inserción. Si un usuario diferente intenta visitar esta dirección URL, recibirá un error de
404. -
En "O solicitar privilegios de omisión", agregue un comentario. Por ejemplo, puede explicar por qué cree que el secreto es seguro para insertar o proporcionar contexto sobre la solicitud para omitir el bloque.
-
Haga clic en Enviar solicitud.
-
Compruebe las notificaciones por correo electrónico para obtener una respuesta a su solicitud. Una vez que se haya revisado la solicitud, recibirá un correo electrónico en el que se le notificará la decisión.
- 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.