Skip to main content

Fehlerbehebung von erforderlichen Statuschecks

Beheben Sie häufige Fehler und heben Sie Blockierungen beim Zusammenführen oder Pushen in geschützte Branches auf, indem Sie Fehler bei den erforderlichen Statusprüfungen beheben.

Wer kann dieses Feature verwenden?

Geschützte Branches sind in öffentlichen Repositories mit GitHub Free und GitHub Free für Organisationen verfügbar. Geschützte Branches sind auch in öffentlichen und privaten Repositorys mit GitHub Pro, GitHub Team, GitHub Enterprise Cloud und GitHub Enterprise Server verfügbar.Siehe Pläne von GitHub.

Verwenden Sie diese Prüfungen, wenn eine erforderliche Statusprüfung das Zusammenführen oder Pushen in einen geschützten Branch blockiert. Siehe Status checks.

  • Eine erforderliche Statusüberprüfung muss in den letzten sieben Tagen erfolgreich im ausgewählten Repository abgeschlossen sein.
  • Wenn eine Überprüfung und ein Commit-Status denselben Namen haben, müssen beide erfolgreich sein, wenn dieser Name erforderlich ist. Siehe REST-API-Endpunkte für Prüfungen.
  • Wenn der Branch-Schutz erfordert, dass Ihr Branch auf dem neuesten Stand ist, mergen Sie den Basis-Branch in Ihren Branch oder rebasen Sie Ihren Branch auf den Basis-Branch. Siehe Informationen zu geschützten Branches und Informationen zu Git-Rebase.

Wenn die erforderlichen Statusprüfungen nicht erfolgreich waren, wird beim Pushen in einen geschützten Branch ein ähnlicher Fehler zurückgegeben.

remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing

Hinweis

Pull-Requests, die auf dem neuesten Stand sind und die erforderlichen Status-Prüfungen bestehen, können lokal zusammengeführt und an den geschützten Branch gepusht werden. Sie können dies tun, ohne Statusüberprüfungen für den Zusammenführungsvorgang selbst auszuführen.

Erforderliche Überprüfung muss für den neuesten Commit-SHA erfolgreich abgeschlossen werden

Überprüfen Sie Folgendes, wenn eine erforderliche Prüfung weiterhin eine Pullanforderung blockiert.

  • Erforderliche Prüfungen müssen auf dem neuesten Commit-SHA erfolgreich sein. Prüfungen aus früheren Commits erfüllen die Anforderung nicht.
  • Erfolgreiche Überprüfungsstatus sind success, skippedund neutral. Siehe Status checks.

Konflikte zwischen dem Head-Commit und dem Test-Merge-Commit

Verwenden Sie das Kontrollkästchen für die Pull-Request-Statusprüfungen, um zu ermitteln, welcher Commit die Prüfungen bestehen muss.

StatusüberprüfungsquelleWas muss passieren?Was Sie möglicherweise sehen können
Test-Merge-Commit hat einen StatusDer Test-Merge-CommitShowing checks for the merge commit
Der Test-Merge-Commit hat keinen StatusDer neueste CommitPrüft den neuesten HEAD-Commit

Siehe REST-API-Endpunkte für Pullanforderungen.

Verwaltung von übersprungenen, aber erforderlichen Überprüfungen

UrsacheResultBeheben oder prüfen
Ein Workflow wird durch Pfadfilterung, Verzweigungsfilterung oder Commitnachricht übersprungen.Zugehörige Prüfungen verbleiben im Status „Ausstehend“ und blockieren das ZusammenführenVermeiden Sie, dass Workflows übersprungen werden können.
Ein Auftrag wird durch eine Bedingung übersprungen.Der Job meldet "Erfolg"Siehe Steuern der Auftragsausführung mithilfe von Bedingungen.
Ein Auftrag hängt von einem fehlgeschlagenen Auftrag ab.Der abhängige Auftrag wird übersprungen und kann das Zusammenführen nicht blockieren.Verwenden Sie always() mit needs für erforderliche Prüfungen, die von anderen Jobs abhängen. Siehe Verwenden von Aufträgen in einem Workflow.

Example

Dieser Workflow erfordert einen erfolgreichen build Job, wird jedoch nur ausgeführt, wenn ein Pull Request Dateien in scripts ändert.

name: ci
on:
  pull_request:
    paths:
      - 'scripts/**'
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
    steps:
    - uses: actions/checkout@v6
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

Eine Pullanforderung, die nur eine Datei im Repositorystamm ändert, löst diesen Workflow nicht aus. Wenn build erforderlich ist, wird der Pull Request mit „Warten auf Statusmeldung.“ blockiert.

Statusprüfungen mit GitHub Actions und Merge-Warteschlange

Wenn eine Merge-Warteschlange eine GitHub Actions Prüfung erfordert, lösen Sie den Workflow mit dem Ereignis merge_group aus.

Hinweis

Wenn Ihr Repository GitHub Actions verwendet, um erforderliche Prüfungen für Pull Requests in Ihrem Repository benötigen, müssen Sie die Workflows aktualisieren, um das merge_group Ereignis als zusätzlichen Auslöser einzubeziehen. Andernfalls werden Statusüberprüfungen nicht ausgelöst, wenn du einer Mergewarteschlange einen Pull Request hinzufügst. Der Merge ist nicht erfolgreich, da die erforderliche Statusüberprüfung nicht gemeldet wird. Das merge_group-Ereignis ist von den Ereignissen pull_request und push getrennt.

Beispiel für die Triggerkonfiguration:

on:
  pull_request:
  merge_group:

Siehe Ereignisse zum Auslösen von Workflows.

Erforderliche Statusüberprüfungen aus unerwarteten Quellen

Eine geschützte Verzweigung kann auch eine Statusüberprüfung eines bestimmten GitHub AppTyps erfordern. Wenn eine Meldung wie die folgende angezeigt wird, überprüfen Sie, ob die im Zusammenführungsfeld aufgeführte Überprüfung von der erwarteten App festgelegt wurde.

Required status check "build" was not set by the expected GitHub App.