# Stack AI-generierter Code in Pullanforderungen

Erstellen Sie einen Stapel kleiner, abhängiger Pullanforderungen, die schnell überprüft werden können.

> \[!NOTE]
> Gestapelte Pullanforderungen befinden sich in Öffentliche Vorschau und können geändert werden.

Große Pull-Anforderungen sind schwierig zu überprüfen und Engpässe zu erstellen, insbesondere, wenn KI Ihnen hilft, ein hohes Codevolumen in kurzer Zeit zu generieren. Die Qualität der Überprüfung verschlechtert sich auch, wenn die Größe der Pull-Anforderung zunimmt. Prüfer können das Ergebnis überspringen, Probleme verpassen oder die Pull-Anforderung zurücklassen, bis sie veraltet wird und Zusammenführungskonflikte entwickelt.

Gestapelte Pullanforderungen behalten große Codeänderungen zur Überprüfung bei.

Ein Stapel ist eine Reihe von Pullanforderungen im selben Repository, in dem jede Pullanforderung auf die Verzweigung der Pullanforderung darunter ausgerichtet ist und eine geordnete Kette bildet, die in einer einzelnen Verzweigung landet, in der Regel Ihre Hauptzweige. Anstelle einer großen Pullanforderung erhalten Sie eine Reihe kleinerer Pullanforderungen. Da jede Pullanforderung über einen eigenen diff mit Relevanz verfügt, können Teamkollegen jede Ebene unabhängig überprüfen und genehmigen.

In diesem Lernprogramm erfahren Sie, wie Sie gestapelte Pullanforderungen mit Agents verwenden, um ein Feature in einzeln bearbeitbaren Ebenen zu erstellen. In unserem Beispiel überlegen wir, wie Sie einer App eine Benutzerauthentifizierung hinzufügen. Wir verwenden GitHub Copilot-CLI und die `gh-stack` Agentenfähigkeit.

## Voraussetzungen

Um die `gh-stack` Fähigkeit mit einem Agent zu verwenden, müssen Sie zuerst installieren GitHub CLI und die `gh-stack` CLI-Erweiterung. Sie benötigen Folgendes:

* GitHub CLI (`gh`) 2.90.0 oder höher und Git 2.20 oder höher.
  * Authentifizieren GitHub CLI mit `gh auth login`.
* Ein GitHub Repository, an das Sie pushen können.
* GitHub Copilot-CLI installiert und angemeldet.

Installieren GitHub CLISie in `gh-stack` , die Erweiterung und Fähigkeiten.

```shell
gh extension install github/gh-stack
gh skill install github/gh-stack
```

> \[!NOTE]
> Wenn Sie in diesem Lernprogramm Stapelbefehle selbst ausführen möchten, anstatt sie zuzulassen Copilot , müssen Sie diese verwenden GitHub CLI.

## 1. Entwerfen eines Stapels vor dem Generieren von Code

Ein guter Stapel ist wie das Bauen eines Hauses, beginnen Sie mit einer starken Grundlage, rahmen Sie die Wände, installieren Sie kabelgebunden und beenden Sie dann die Trockenmauer. Jede von der folgenden Ebene abhängige Ebene. Am Ende sollte ein Prüfer in der Lage sein, die Pullanforderungen von unten nach oben zu lesen und dem Feature zu folgen, das zusammenkommt.

* Teilen Sie das Feature in Ebenen auf. Jede Ebene sollte eine einzelne, kohärente Änderung sein, die eigenständig überprüft werden kann.
  * Halten Sie jede Ebene klein genug, damit die Pullanforderung schnell gelesen wird. Wenn sich eine Ebene wie eine lange Beschreibung zum Überprüfen fühlt, ist sie wahrscheinlich zu groß.
  * Entscheiden Sie die Grenzen selbst, oder arbeiten Sie mit Copilot einem Plan zusammen. In beiden Richtungen besitzen Sie die Form des Stapels.
* Ordnen Sie die Ebenen nach Abhängigkeit an. Grundlegende Änderungen werden unten angezeigt. Alles, was von ihnen abhängt, geht höher. Für die Authentifizierung kann folgendes sein:
  * Ebene 1: Datenmodell und Migration
  * Layer 2: CRUD-Endpunkte
  * Layer 3: JWT Middleware und Guards
  * Layer 4: Integrations- und Komponententests

### Beispiel-Prompts

* `Propose a layered approach to add user authentication to this app. Order the layers by dependency, keeping each layer independently reviewable.`
* `Review my planned layers and flag any that are too large or that depend on a branch above them.`

## 2. Erstellen Sie zuerst die untere Ebene

Starten Sie den Stapel mit der Grundlage. Alles oben hängt davon ab, dass diese Ebene richtig ist.

* Informieren Copilot Sie, dass Sie eine gestapelte Pullanforderung erstellen und bitten, die erste Ebene basierend auf Ihrem Plan zu erstellen. Der Agent verwendet die `gh-stack` Fähigkeit, den ersten Zweig des Stapels zu erstellen.
* Wenn Sie den Stapel selbst erstellen möchten, erstellen Sie ihn direkt mit `gh stack init`einem Präfix, um Verzweigungsnamen übersichtlich zu halten, `gh stack init BRANCH-NAME-1`z. B. .
* Überprüfen Sie die generierte Änderung selbst, bevor Sie fortfahren. Ein Fehler in der unteren Ebene verteilt sich auf jede Verzweigung darüber, also geben Sie ihm eine Überprüfung, bevor Sie fortfahren.

### Beispiel-Prompts

* `Start the pr-stack and build only the first layer: the user data model and migration.`
* `Conduct a review of the generated code and confirm this branch contains only the data model and migration, and nothing that belongs in a later layer.`

## 3. Stapeln Sie jede neue Codeebene oben

Wenn die Grundlage eingerichtet ist, erstellen Sie den Rest des Features jeweils eine Ebene.

* Bitten Sie Copilot , die nächste Ebene hinzuzufügen und sie im Kontext der nachfolgenden Ebenen zu implementieren. Der Agent fügt oben im Stapel eine Verzweigung hinzu und setzt die Arbeit dort fest.
* Wenn Sie eine Verzweigung selbst hinzufügen möchten, verwenden Sie `gh stack add BRANCH-NAME-NEXT`.
* Wenn eine Schicht zu groß wird, überlegen Sie, ob sie außerhalb ihres Plans gedrift wurde oder ob Sie tatsächlich zwei Ebenen anstelle einer schicht benötigen.
* Erstellen Sie neue Verzweigungen für jede Ebene, sodass jede Verzweigung ein sauberes, eigenständiges Diff bleibt.
* Wenn Sie bereit sind, Pullanforderungen zu erstellen, bitten Copilot Sie, Ihren Stapel zu übermitteln, oder wenn Sie dies selbst tun möchten, verwenden `gh stack submit`Sie .
* Lassen Sie jede Pullanforderung eigenständig stehen. Ein fokussierter Titel und eine präzise, aussagekräftige Beschreibung der Ebene reicht in der Regel aus.

### Beispiel-Prompts

* `Add the next layer in a new branch on top: the CRUD endpoints that use the user model from the branch below.`
* `This branch is getting large. Suggest how it could be split into two independently reviewable layers.`

## 4. Überprüfen Sie die Pullanforderungen selbst, bevor Sie eine Überprüfung beantragen

Jede Ebene ist klein und erleichtert auch die Selbstüberprüfung. Geben Sie jeden Zweig weiter, bevor Sie Teamkollegen einbeziehen. Prüfer sollten Bereits vertrauenswürdige Änderungen erhalten.

* Führen Sie Ihre Tests, Linters und Codeüberprüfungen für jede Verzweigung aus. Lassen Sie Copilot sie ihnen helfen, jede Ebene anhand Ihrer Standards zu überprüfen, bevor Sie Rezensionen anfordern.
* Die Techniken zum gründlichen Überprüfen von KI-generierten Änderungen finden Sie unter [Überprüfen von KI-generierten Code](/de/enterprise-cloud@latest/copilot/tutorials/review-ai-generated-code).

## 5. Fordern Sie Rezensionen für den Stapel an, beginnend am unteren Rand

Mit den erstellten Ebenen erhalten Prüfer kleine Diffs anstelle einer großen Codewand.

* Wenn die Abhängigkeiten stark integriert sind, bitten Sie nach Rezensionen, die am Ende des Stapels beginnen, damit Sie Änderungen am Stapel vor nachfolgenden Überprüfungen integrieren können.
* Wenn Sie Rezensionen von separaten Personen für verschiedene Ebenen benötigen, können Prüfer parallel arbeiten. Eine Person kann das Datenmodell überprüfen, während eine andere die Endpunkte überprüft, und weder durch das gesamte Feature.

## 6. Feedback durchlaufen

Das Feedback wird einzeln auf Ebenen und nicht auf das gesamte Feature gelandet. Mithilfe von Stapeln können Sie die richtige Schicht an der Stelle korrigieren und die Änderung nach oben tragen.

* Bitten Sie Copilot , die Ebene zu überarbeiten, die ein Bearbeiter gekennzeichnet hat. Der Agent wechselt zur rechten Verzweigung, nimmt die Änderung vor und übernimmt sie dort. Anschließend werden die oben genannten Ebenen neu gebaset, sodass sie den Fix wieder aufnehmen.
* Behalten Sie jeden Fix auf der Ebene bei, zu der er gehört. Eine Änderung, die an der falschen Verzweigung vorgenommen wurde, kann Fehler verwechseln und Fehler aufsteigen.
* Wenn Sie Korrekturen vornehmen, bitten Sie Copilot , die oben genannten Verzweigungen neu zu erstellen und Änderungen weiterzuverbreiten.
* Wenn Sie den Stapel selbst durchlaufen möchten, navigieren Sie zu Verzweigungen mit `gh stack down`, oder `gh stack up``gh stack checkout BRANCH-NAME`. Übernehmen Sie dann Ihre Änderungen, und führen Sie die Ausführung aus `gh stack rebase --upstack` , um Änderungen im Stapel zu übernehmen.

### Beispiel-Prompts

* `A reviewer flagged that the auth service doesn't handle expired tokens. Fix that on BRANCH-NAME and test the changes.`
* `I've rebased the layers above onto this fix. Check that the branch with endpoints still works with the change and flag anything that needs updating.`

## 7. Zusammenführen von der unteren Ebene

Ein Stapel wird in der Reihenfolge zusammengeführt, beginnend von der Ebene, die auf Ihre Hauptzweige zeigt. Verbinden Sie Alle Ebenen auf einmal oder einzeln, und GitHub automatisch auf die nächste Ebene ausgerichtet, die auf den Hauptpunkt zeigt.

* Führen Sie den Stapel einzeln zusammen, der von unten nach oben oder von einer beliebigen Stelle im Stapel funktioniert, und alle Verzweigungen unterhalb der Pullanforderung, die Sie zusammenführen, werden von unten nach oben zusammengeführt.
* Jeder Layer-Diff bleibt im Verhältnis zu seinem übergeordneten Element genau gleich, nur die Basisänderungen, wodurch es einfach ist, eine Ebene gleichzeitig zusammenzuführen, ohne dass sich dies auf laufende Arbeit oder Rezensionen auswirkt.
* Verwenden Sie die automatische Zusammenführung oder eine Seriendruckwarteschlange, sodass jede Ebene zusammenführt, sobald sie genehmigt und ihre Prüfungen bestanden werden. Sie müssen nicht gleichzeitig auf den gesamten Stapel warten.

Sobald die oberste Ebene zusammengeführt wird, ist das gesamte Feature gelandet. Jedes Stück wurde effektiver als kleine, absichtliche Änderung statt einer großen Pullanforderung überprüft.

## Weiterführende Lektüre

* [Überprüfen von KI-generierten Code](/de/enterprise-cloud@latest/copilot/tutorials/review-ai-generated-code)
* [Managing stacked pull requests](/de/enterprise-cloud@latest/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests)