Skip to main content

Pushen eines durch Pushschutz blockierten Branches

Der Pushschutz schützt Sie proaktiv vor kompromittierten Geheimnissen in Ihren Repositorys. Du kannst die Probleme in blockierten Pushes beheben. Sobald das erkannte Geheimnis entfernt wurde, kannst du die Änderungen über die Befehlszeile oder die Webbenutzeroberfläche an den Arbeitsbranch pushen.

Wer kann dieses Feature verwenden?

Der Pushschutz für Benutzer ist standardmäßig aktiviert und kann in Ihren persönlichen Kontoeinstellungen deaktiviert werden.

Push-Schutz für Repositorys und Organisationen ist für öffentliche Repositorys kostenlos verfügbar. Organisationen, die GitHub Enterprise Cloud mit einer Lizenz für GitHub Advanced Security verwenden, können den Pushschutz auch für ihre privaten und internen Repositorys aktivieren.

Weitere Informationen finden Sie unter "Pushschutz für Benutzer" und "Pushschutz für Repositorys und Organisationen".

Informationen zum Pushschutz

Der Pushschutz hilft dabei, Sicherheitslecks zu verhindern, indem er auf Geheimnisse prüft, bevor du Änderungen in dein Repository pushst.

Wenn du versuchst, ein Geheimnis an ein durch Pushschutz gesichertes Repository zu pushen, blockiert GitHub den Pushvorgang. Du musst das Geheimnis aus deinem Branch entfernen, bevor du wieder pushen kannst. Weitere Informationen zum Auflösen eines blockierten Pushes findest du unter Korrigieren eines blockierten Pushes über die Befehlszeile und Korrigieren eines blockierten Pushes über die Webbenutzeroberfläche in diesem Artikel.

Wenn du glaubst, dass es sicher ist, das Geheimnis zuzulassen, hast du die Möglichkeit, den Schutz zu umgehen. Weitere Informationen findest du unter Zulassen, dass ein blockiertes Geheimnis gepusht wird und Umgehen des Pushschutzes für ein Geheimnis.

Weitere Informationen zu Geheimnissen und Dienstanbietern, für die der Pushschutz unterstützt wird, findest du unter Geheimnisüberprüfungsmuster.

Korrigieren eines blockierten Pushes über die Befehlszeile

Wenn du ein unterstütztes Geheimnis an ein Repository mit Pushschutz pushen möchtest, blockiert GitHub den Push. Du kannst das Geheimnis aus deinem Branch entfernen oder auf eine bereitgestellte URL klicken, um den Push zuzulassen.

Hinweise:

  • Wenn deine Git-Konfiguration das Pushen an mehrere Branches und nicht nur an den aktuellen Branch unterstützt, wird dein Push möglicherweise blockiert, weil zusätzliche und unbeabsichtigte Verweise gepusht werden. Weitere Informationen findest du unter push.default-Optionen in der GitHub-Dokumentation.
  • Wenn für secret scanning bei einem Push ein Timeout auftritt, scannt GitHub die Commits nach dem Pushen trotzdem auf Geheimnisse.

Entfernen eines Geheimnisses, das durch den letzten Commit in deinem Branch eingeführt wurde

Wenn das blockierte Geheimnisse mit dem letzten Commit in deinen Branch gelangt ist, befolge diese Schritte:

  1. Entferne das Geheimnis aus deinem Code.
  2. Um die Änderungen zu committen, führe git commit --amend aus. Dadurch wird der ursprüngliche Commit aktualisiert, der das Geheimnis eingeführt hat, anstatt einen neuen Commit zu erstellen.
  3. Pushe die Änderungen mit git push.

Entfernen eines Geheimnisses, das von einem früheren Commit in deinem Branch eingeführt wurde

Du kannst das Geheimnis auch entfernen, wenn es in einem früheren Commit im Git-Verlauf vorkommt. Dazu musst du ermitteln, welcher Commit das Geheimnis zuerst eingeführt hat und den Verlauf der Commits durch die Ausführung eines interaktiven Rebase ändern.

  1. 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
    
  2. Führe als nächstes git log aus, 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
    
    
  3. Focusing only on the commits that contain the secret, use the output of git log to identify which commit comes earliest in your Git history.

    • In the example, commit 8728dbe67 was the first commit to contain the secret.
  4. 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.
  5. In the editor, choose to edit the commit identified in step 3 by changing pick to edit on the first line of the text.

    edit 8728dbe67 my second commit message
    pick 03d69e5d3 my third commit message
    pick 8053f7b27 my fourth commit message
    
  6. Speichere den Vorgang und schließe den Editor, um den interaktiven Rebase-Vorgang zu starten.

  7. Entferne das Geheimnis aus deinem Code.

  8. Committe deine Änderungen mithilfe von git commit --amend.

  9. Führe git rebase --continue aus, um das Rebasing fertigzustellen.

  10. Pushe die Änderungen mit git push.

Korrigieren eines blockierten Pushes über die Webbenutzeroberfläche

Wenn Sie über die Webbenutzeroberfläche versuchen, ein unterstütztes Geheimnis an ein Repository zu committen, das über Pushschutz verfügt, blockiert GitHub den Commit.

Es wird ein Dialogfeld mit Informationen zum Speicherort des Geheimnisses sowie Optionen zum Pushen des Geheimnisses angezeigt. Das Geheimnis wird auch in der Datei unterstrichen, damit du es einfacher finden kannst.

Um einen blockierten Commit über die Webbenutzeroberfläche zu korrigieren, musst du das Geheimnis aus der Datei entfernen. Nachdem du das Geheimnis entfernt hast, kannst du deine Änderungen committen.

Wenn du feststellst, dass es sicher ist, das Geheimnis zuzulassen, kannst du alternativ die im Dialogfeld angezeigten Optionen verwenden, um den Pushschutz zu umgehen. Weitere Informationen zur Umgehung des Pushschutzes über die Webbenutzeroberfläche findest du unter Pushschutz für Repositorys und Organisationen.

Weitere Informationen