# Bereitstellen von Code

Überprüfen Sie die Prüfungen vor der Bereitstellung, wählen Sie Zusammenführungsstrategien aus und verwalten Sie Branches bei der Codebereitstellung effektiv.

Der letzte Schritt bei einem Pull Request besteht darin, abgeschlossene Arbeit in den Deployment-Branch zu übernehmen. Dies bedeutet in der Regel, Ihre Änderungen mit dem Release- oder Hauptzweig zusammenzuführen. Bevor dies der Fall ist, müssen Sie bestätigen, dass die Änderung den Anforderungen des Projekts entspricht.

## Validierung von Prüfungen vor der Bereitstellung

Bevor Sie zusammenführen, vergewissern Sie sich, dass die Änderung sicher bereitgestellt werden kann.
**Statusüberprüfungen** zeigen an, ob Commits die für das Repository festgelegten Bedingungen erfüllen, z. B. fortlaufende Integrationsbuilds, Tests, Codeüberprüfungen oder Bereitstellungsprüfungen. Sie helfen Ihnen und Prüfern zu verstehen, ob eine Pullanforderung zum Zusammenführen bereit ist.

Repositorys erfordern häufig bestimmte Bedingungen, bevor eine Pullanforderung zusammenführen kann, einschließlich:

* Erforderliche Statusprüfungen, die bestehen müssen, z. B. Anwendungsintegritäts- und Bereitschaftsprüfungen, die von Ihrer Bereitstellungspipeline ausgeführt werden.
* Erforderliche Überprüfungen oder Genehmigungen des Codebesitzers.
* Zusammenführungskonflikte müssen aufgelöst werden.

Geschützte Branches erzwingen diese Anforderungen, sodass Deployment-Branches stabil bleiben.

Nicht alle Prüfungen sind identisch. Umfangreiche Prüfungen, die von Produkten wie GitHub Actions erstellt werden, können detaillierte Protokolle und Annotationen enthalten, während einfachere Commit-Status von einer Vielzahl verbundener Systeme veröffentlicht werden können. Wenn Sie diese Zusammenhänge verstehen, können Sie nachvollziehen, warum ein Pull Request bereit ist oder nicht.

## Zusammenführen von Code in den Release- oder Hauptzweig

Wenn die Anforderungen erfüllt sind, führen Sie die Pullanforderung zusammen, um deren Commits in den Basiszweig zu übertragen. Sie können auch das Zusammenführen automatisieren, sodass ein Pull Request zusammengeführt wird, sobald seine Voraussetzungen erfüllt sind. Pullanforderungen bieten unterschiedliche Zusammenführungsstrategien, je nachdem, wie der Repositoryverlauf aussehen soll:

* **Der Merge-Commit** bewahrt alle Commits aus dem Pull-Request-Branch und fügt einen expliziten Zusammenführungspunkt hinzu.
* **Squashen und zusammenführen** kombiniert alle Commits zu einem einzigen Commit für eine übersichtliche Historie.
* **Rebasen und zusammenführen** wendet jeden Commit auf den Basis-Branch an, sodass ein linearer Verlauf ohne Merge-Commit entsteht.

Die beste Strategie hängt davon ab, wie viel Detail Ihr Team beibehalten möchte.

## Durchsetzung von Anforderungen in großem Maßstab

Wenn häufiger zusammengeführt wird, fügen Teams Kontrollen hinzu, um Zusammenführungen sicher und vorhersehbar zu halten:

* **Regelsätze und Branch-Schutz** können vor dem Zusammenführen einen aktuellen Branch-Stand, signierte Commits, eine lineare Commit-Historie oder bestimmte Statusprüfungen erfordern.
* Eine **Merge-Warteschlange** ermöglicht es einem stark frequentierten geschützten Branch, viele Pull Requests zu akzeptieren, ohne dass dabei etwas kaputtgeht. Sie testet jede einzelne gegen die neueste Version des Basiszweigs und führt sie der Reihe nach zusammen, sobald die Prüfungen erfolgreich abgeschlossen sind. Wenn ein Branch eine Merge-Warteschlange verwendet, unterscheiden sich die verfügbaren Zusammenführungsoptionen von denen bei einer Standardzusammenführung.

> \[!NOTE]
>
> Mergewarteschlangen für Pull Requests sind in öffentlichen Repositorys von Organisationen oder in privaten Repositorys von Organisationen verfügbar, die GitHub Enterprise Cloud verwenden. Siehe [Pläne von GitHub](/de/enterprise-cloud@latest/get-started/learning-about-github/githubs-plans).

## Merges mit Bereitstellungen verknüpfen

Das Zusammenführen von Änderungen ist oft der Auslöser dafür, dass Code ausgeliefert wird.
GitHub Actions kann Bereitstellungsworkflows ausführen, wenn eine Pullanforderung in eine Release- oder Hauptzweigung zusammengeführt wird.
**Bereitstellungsumgebungen** fügen eine weitere Ebene der Sicherheit vor der Bereitstellung hinzu: Sie können bestimmte Prüfer, Wartezeiten oder Verzweigungseinschränkungen erfordern, bevor eine Bereitstellung fortgesetzt wird, und diese werden zusammen mit ihren anderen Prüfungen angezeigt.

## Wiederherstellung nach einer Zusammenführung

Trotz eingerichteter Kontrollen müssen einige Zusammenführungen rückgängig gemacht werden. Sie können eine zusammengeführte Pullanforderung wiederherstellen, um eine neue Pullanforderung zu erstellen, die die Änderungen umkehrt. Beachten Sie, dass eine Pullanforderung *indirekt in* seltenen Fällen als zusammengeführt gekennzeichnet werden kann, wenn ihre Commits den Basiszweig über einen anderen Pfad erreichen. Dadurch können die Schutzmaßnahmen für diese spezifische Pullanforderung umgangen werden. Siehe [Einen Pull Request rückgängig machen](/de/enterprise-cloud@latest/pull-requests/how-tos/merge-and-close-pull-requests/reverting-a-pull-request) und [Pull-Request-Zusammenführungen](/de/enterprise-cloud@latest/pull-requests/reference/pull-request-merges#indirect-merges).

## Schließen von Pull Requests, die nicht übernommen werden

Nicht jede Pullanforderung sollte zusammengeführt werden. Wenn eine Änderung nicht mehr benötigt wird oder von anderen Arbeiten abgelöst wird, können Sie die Pullanforderung schließen, ohne sie zusammenzuführen. Durch das Schließen bleiben die Diskussion und der Verlauf als Referenz erhalten und es wird gleichzeitig signalisiert, dass die Änderung nicht weiterverfolgt wird.

Nachdem eine Pullanforderung zusammengeführt oder geschlossen wurde, wird ihre Head Branch häufig nicht mehr benötigt. Durch das Löschen nicht verwendeter Verzweigungen bleibt das Repository einfacher zu navigieren.

## Weiterführende Lektüre

* [Merging a pull request](/de/enterprise-cloud@latest/pull-requests/how-tos/merge-and-close-pull-requests/merging-a-pull-request)
* [Status checks](/de/enterprise-cloud@latest/pull-requests/reference/status-checks)
* [Verwalten von Umgebungen für die Bereitstellung](/de/enterprise-cloud@latest/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments)