Auflösen eines blockierten Pushvorgangs
Um die Blockierung eines Pushvorgangs zu beheben, müssen Sie das Geheimnis aus allen Commits entfernen, in denen es angezeigt wird.
- Wenn das Geheimnis mit dem letzten Commit eingeführt wurde, finden Sie weitere Informationen unter Entfernen eines Geheimnisses, das durch den letzten Commit in einer Verzweigung eingeführt wurde.
- Wenn das Geheimnis mit früheren Commits eingeführt wurde, finden Sie weitere Informationen unter Entfernen eines Geheimnisses, das von einem früheren Commit in der Verzweigung eingeführt wurde.
Entfernen eines Geheimnisses, das durch den letzten Commit in deinem Branch eingeführt wurde
- Entferne das Geheimnis aus deinem Code.
- Um die Änderungen zu committen, führe
git commit --amend --allaus. Dadurch wird der ursprüngliche Commit aktualisiert, der das Geheimnis eingeführt hat, anstatt einen neuen Commit zu erstellen. - Pushe die Änderungen mit
git push.
Entfernen eines Geheimnisses, das von einem früheren Commit in deinem Branch eingeführt wurde
-
Untersuche die Fehlermeldung, die angezeigt wurde, als du versucht hast, deinen Branch zu pushen, und die alle Commits auflistet, die das Geheimnis enthalten.
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 -
Führe als nächstes
git logaus, um einen vollständigen Verlauf aller Commits in deinem Branch mit den entsprechenden Zeitstempeln anzuzeigen.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 -
Speichere den Vorgang und schließe den Editor, um den interaktiven Rebase-Vorgang zu starten.
-
Entferne das Geheimnis aus deinem Code.
-
Fügen Sie Ihre Änderungen mittels
git add .zum Stagingbereich hinzu.Hinweis
Der vollständige Befehl lautet
git add .:- Es gibt ein Leerzeichen zwischen
addund.. - Der Punkt nach dem Leerzeichen ist Teil des Befehls.
- Es gibt ein Leerzeichen zwischen
-
Committe deine Änderungen mithilfe von
git commit --amend. -
Führe
git rebase --continueaus, um das Rebasing fertigzustellen. -
Pushe die Änderungen mit
git push.
Umgehen des Pushschutzes
Hinweis
Wenn die Option zum Umgehen eines Blocks nicht angezeigt wird, sollten Sie den geheimen Schlüssel aus dem Commit entfernen oder eine Anforderung für "Umgehungsberechtigungen" übermitteln, um den blockierten geheimen Schlüssel zu übertragen. Siehe Anfordern von Umgehungsberechtigungen.
-
Rufe die URL, die von GitHub zurückgegeben wurde, als dein Push blockiert wurde, als dieselbe benutzende Person auf, die den Push durchgeführt hat. Wenn eine andere Peson versucht, diese URL aufzurufen, wird ein
404-Fehler zurückgegeben. -
Wähle die Option aus, die am besten beschreibt, warum du in der Lage sein solltest, den geheimen Schlüssel zu pushen.
- Wenn das Geheimnis nur in Tests verwendet wird und keine Bedrohung darstellt, klicke auf It's used in tests (Wird in Tests verwendet).
- Wenn die erkannte Zeichenfolge kein Geheimnis ist, klicke auf It's a false positive (Es handelt sich um einen False Positive).
- Wenn das Geheimnis echt ist, du es jedoch später beheben möchtest, klicke auf I'll fix it later (Problem wird später behoben).
-
Klicke auf Allow me to push this secret (Pushen dieses Geheimnisses zulassen).
-
Wiederhole den Push innerhalb von drei Stunden über die Befehlszeile. Wenn du innerhalb von drei Stunden keinen Push durchgeführt hast, musst du diesen Vorgang wiederholen.
Anfordern von Umgehungsberechtigungen
-
Rufe die URL, die von GitHub zurückgegeben wurde, als dein Push blockiert wurde, als dieselbe benutzende Person auf, die den Push durchgeführt hat. Wenn eine andere Peson versucht, diese URL aufzurufen, wird ein
404-Fehler zurückgegeben. -
Fügen Sie unter „Oder Überbrückungsberechtigungen anfordern“ einen Kommentar hinzu. Sie können z. B. erklären, warum Sie glauben, dass die Weitergabe des Geheimnisses sicher ist, oder den Kontext der Anforderung zur Überbrückung der Sperre erläutern.
-
Klicken Sie auf Anforderung übermitteln.
-
Prüfen Sie Ihre E-Mail-Benachrichtigungen auf eine Antwort auf Ihre Anforderung. Nachdem Ihre Anforderung überprüft wurde, erhalten Sie eine E-Mail, die Sie über die Entscheidung informiert.
- Wenn Ihre Anforderung genehmigt wurde, können Sie den Commit (oder Commit) mit dem Geheimschlüssel an das Repository übertragen sowie zukünftige Commits, die denselben geheimen Schlüssel enthalten.
- Wenn Ihre Anforderung verweigert wird, müssen Sie den geheimen Schlüssel aus allen Commits entfernen, bevor Sie erneut pushen. Weitere Informationen zur Entfernung eines blockierten Geheimnisses findest du unter Auflösen eines blockierten Pushvorgangs.
Weiterführende Lektüre
-
[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)