Skip to main content

Informationen zu gestapelten Pullanforderungen

Unterteilen Sie große Codeänderungen in eine Kette kleinerer, abhängiger Pullanforderungen, die Sie unabhängig überprüfen und zusammenführen können.

Hinweis

Dieses Feature befindet sich in der öffentlichen Vorschau und kann geändert werden.

Informationen zu gestapelten Pullanforderungen

Gestapelte Pullanforderungen sind zwei oder mehr Pullanforderungen im selben Repository, wobei:

  • Die erste oder untere Pullanforderung zielt auf den Trunk des Stapels ab – in der Regel die Standardverzweigung Ihres Repositorys, z main. B. eine verzweigte Verzweigung, z. B. eine Release-Verzweigung.
  • Jede nachfolgende Pullanforderung zielt auf den Zweig der Pullanforderung darunter ab.
   ┌── feat/frontend     → PR #3 (base: feat/api-endpoints)  ← top
  ┌── feat/api-endpoints → PR #2 (base: feat/auth-layer)
 ┌── feat/auth-layer     → PR #1 (base: main)               ← bottom
main (default base branch)

Gestapelte Verzweigungen bilden eine Abhängigkeitskette, wobei jede Verzweigung auf der darunter liegenden Verzweigung aufbaut. Grundlegende Änderungen wie freigegebene Typen und Datenbankschemas gehen in niedrigere Verzweigungen und Code, der von ihnen abhängig ist, z. B. API-Routen und UI-Komponenten, in höhere Verzweigungen.

Jede Pullanforderung in einem Stapel stellt eine diskrete, bearbeitbare Änderung eines oder mehrerer Commits dar. Sie können jede Pullanforderung unabhängig überprüfen und durchlaufen, und jeder zeigt nur den Diff für seine Ebene und die Änderungen zwischen dem Verzweigung und der Verzweigung darunter an.

Das Schlüsselprinzip: Wenn Code in einer Ebene von Code in einer anderen Ebene abhängt, muss sich die Abhängigkeit in derselben Verzweigung oder einer niedrigeren Verzweigung befinden. Erstellen Sie eine neue Verzweigung, wenn Sie mit einer anderen Sorge beginnen, die von dem abhängt, was Sie bisher erstellt haben. Wenn Sie beispielsweise von Back-End zu Frontend-Arbeit wechseln, von der Kernlogik zu Tests wechseln oder wenn die aktuelle Verzweigung bereits groß genug ist, um zu überprüfen.

Gründe für die Verwendung GitHub von gestapelten Pullanforderungen

Fertig stellen sie eine Änderung ab, und bewegen Sie sich direkt auf die nächste

Mit gestapelten Pullanforderungen können Sie eine neue Pull-Anforderung über einer neuen Pullanforderung öffnen, die noch geöffnet ist. Während eines großen Projekts hängt ihre nächste Änderung möglicherweise von Der Arbeit ab, die noch nicht zusammengeführt wurde. Anstatt auf die Zusammenführung zu warten, können Sie mit einem Stapel weiter aufbauen.

Bei jeder Pullanforderung in einem Stapel mit einer fokussierten Änderung sehen Prüfer einen kleinen Diff für jede Ebene anstelle der großen Pullanforderung. Kleinere Pullanforderungen werden schneller überprüft, weniger wahrscheinlich überspringt und weniger wahrscheinlich veraltet sein und Zusammenführungskonflikte entwickeln.

Fit für die Entwicklung mit hohem Volumen

Wenn Sie eine Menge Code gleichzeitig generieren, häufig mit KI-Agents, gibt ein Stapel jede Änderung an einem Ort, an dem Sie losgehen können. Ein Agent führt eine Aufgabe aus und startet dann die nächste Aufgabe, die darauf basiert. Diese Sequenz wird direkt einem Stapel zugeordnet: eine Pullanforderung pro Aufgabe, die jeweils auf der nachstehenden Abfolge basiert. Mithilfe von Stapeln können Sie diese Abhängigkeiten explizit aufzeichnen, anstatt nicht verknüpfte Änderungen in einer einzelnen Verzweigung zu kombinieren.

Vorteile der Verwendung von gestapelten Pullanforderungen in GitHub

Ohne gestapelte Pullanforderungen wird eine große Änderung in kleinere, abhängige Pullanforderungen erstellt zusätzliche Arbeit:

  • Zweigverwaltung. Das Neubasieren und Synchronisieren von Verzweigungen über abhängige Pullanforderungen hinweg ist mühsam und fehleranfällig.
  • Regeln und CI. Branch protection rules and CI checks often trigger for the bottom pull request in the chain, making it hard to know the true status of the rest.
  • Überprüfen Sie den Kontext. Durch die Überprüfung einer einzelnen Änderung außerhalb des Kontexts aus dem restlichen Stapel kann die Überprüfungsqualität reduziert werden.

Gestapelte Pullanforderungen beheben diese Probleme, indem die Kette der Pullanforderungen als verbundene Einheit behandelt wird, wobei jede Ebene klein und fokussiert bleibt.

Re

Die Neubasierung ist der schwierigste Teil der Arbeit mit Stapeln und GitHub behandelt sie automatisch. Sie können eine serverseitige Cascading-Rebase aus der Pullanforderung auslösen oder eine lokale Cascading Rebase mit der gh stack Erweiterung GitHub CLIin ausführen. Wenn Sie eine Pullanforderung am unteren Rand des Stapels zusammenführen, werden die verbleibenden Verzweigungen automatisch neu zuordnen, sodass die nächste Pullanforderung auf den Standardbasiszweig ausgerichtet ist.

Wo können Sie gestapelte Pullanforderungen verwenden?

Gestapelte Pullanforderungen sind in den folgenden Themen verfügbar:

  • GitHub CLI
  • GitHub-Website
  • GitHub Mobile
  • Programmgesteuerte Unterstützung über Webhooks, REST-API und GraphQL
  • Für Agenten, über die gh-stack Fähigkeit

Hinweis

  • Gestapelte Pullanforderungen erfordern, dass sich alle Verzweigungen im selben Repository befinden. Kreuzverzweigungsstapel werden nicht unterstützt.
  • Gestapelte Pullanforderungen werden in GitHub Desktop.

In GitHub CLI

Die gh stack Erweiterung in GitHub CLI der Verarbeitung des lokalen Entwicklungsworkflows. Sie können Verzweigungen in der richtigen Abhängigkeitsreihenfolge erstellen und nachverfolgen, Verzweigungen neu geordnet, Push-Verzweigungen beibehalten, Pullanforderungen erstellen und verknüpfen und zwischen Ebenen navigieren. Siehe Gestapelte Pullanforderungen CLI-Befehle.

Auf der GitHub Website

Wenn eine Pullanforderung Teil eines Stapels ist, sehen Sie Folgendes:

  • Ein Stapelsymbol am oberen Rand der Pullanforderung mit einer Zahl, die angibt, welche Ebene Sie anzeigen.
  • Im Seriendruckfeld wird eine Stapelzuordnung angezeigt. Es zeigt jede Pullanforderung im Stapel und dessen Status an und ermöglicht es Ihnen, mit nur einem Klick zu einer beliebigen Ebene zu navigieren. Der Trunk (Standardbasisverzweigung) befindet sich unten, wobei jede Pullanforderung im Stapel für die Verzweigung der Pullanforderung darunter ausgerichtet ist.

Programmgesteuerte Unterstützung über Webhooks, REST-API und GraphQL

Gestapelte Pullanforderungen sind programmgesteuert verfügbar, sodass Sie sie in Ihre eigenen Tools, Automatisierung und Dashboards integrieren können:

  • Webhooks enthalten ein stack Objekt in pull_request Ereignisnutzlasten, sodass Ihre Automatisierung reagieren kann, wenn eine Pullanforderung verknüpfungen, Verschiebungen innerhalb oder hinterlässt einen Stapel.
  • Die REST-API liest die Stapelmitgliedschaft einer Pullanforderung und stellt Endpunkte zum Auflisten, Erstellen, Erweitern und Auflösen von Stapeln bereit.
  • Die GraphQL-API macht schreibgeschützte stack Felder in einer Pullanforderung zum Abfragen des Stapels und der Position der Pullanforderung verfügbar.

Regeln, CI und Zusammenführen

Regeln und CI-Durchsetzung

Gestapelte Pullanforderungen unterstützen GitHub Actions Workflows.

Die Zusammenführungsanforderungen für jede Pullanforderung im Stapel werden durch den Basiszweig der unteren Pullanforderung bestimmt, in der Regel main.

  • Branch-Schutzregeln, z. B. CODEOWNER-Genehmigungen, werden für jede Pullanforderung im Stapel erzwungen, auch Mid-Stack-Pullanforderungen, die nicht direkt auf Ihre Standardverzweigung abzielen.
  • CI-Prüfungen, die durch Pullanforderungen für Ihre Standardmäßige Verzweigung ausgelöst werden, für alle Pullanforderungen im Stapel, nicht nur für die untere.

Dadurch wird sichergestellt, dass jede Schicht des Stapels die gleiche Qualitätsleiste erfüllt, bevor sie zusammenführen kann.

Zusammenführen

Sie können den gesamten Stapel, eine einzelne Pullanforderung oder einen Teil des Stapels zusammenführen, der mehrere Pullanforderungen umfasst. Der gesamte Stapel muss nicht gleichzeitig zusammengeführt werden, aber Pullanforderungen müssen von unten nach oben zusammengeführt werden.

  • Führen Sie den gesamten Stapel gleichzeitig zusammen, indem Sie die obere Pullanforderung zusammenführen. Jede Pullanforderung darunter kommt.
  • Führen Sie einen Teil des Stapels zusammen, indem Sie eine Mid-Stack-Pullanforderung zusammenführen. Die Pullanforderungen darunter werden ebenfalls zusammengeführt, und die oben genannten Pullanforderungen bleiben geöffnet und werden automatisch auf den Basiszweig des Stapels ausgerichtet.

Stapel unterstützen Zusammenführungs-Commit-, Auftrags- und Rebase-Zusammenführungsmethoden, und sie sind in der Zusammenführungswarteschlange bekannt. Der resultierende Commit-Verlauf ist identisch mit dem Zusammenführen jeder Pullanforderung, beginnend von unten.

Hinweis

Wenn Sie über die API zusammenführen und gestapelte Pullanforderungen verwenden möchten, müssen Sie aktualisieren, um die neue Zusammenführungs-API für Stapel zu verwenden. Siehe Gestapelte Pullanforderungen in den REST- und GraphQL-APIs.

Nächste Schritte