Artikelversion: Enterprise Server 2.17
Informationen zum Mergen von Pull Requests
Sie können Pull Requests mergen, indem Sie alle Commits in einem Feature-Branch beibehalten, alle Commits in einen einzigen Commit squashen oder ein Rebasing einzelner Commits vom Head-Branch auf den Basis-Branch durchführen.
Wenn Du in einem Pull-Request auf Ihre GitHub Enterprise Server-Instanz auf die standardmäßige Option Merge pull request (Pull-Request mergen) klickst, werden alle Commits aus dem Feature-Branch zum Basis-Branch in einem Merge-Commit hinzugefügt. Der Pull-Request wird mithilfe der Option --no-ff
zusammengeführt.
Zum Zusammenführen von Pull-Requests musst Du über Schreibberechtigungen im Repository verfügen.
Ihre Pull-Request-Commits squashen und mergen
Wenn Du die Option Squash and merge (Squash und Merge) in einer Abrufanfrage auf Ihre GitHub Enterprise Server-Instanz auswählst, werden die Commits der Abrufanfrage in einen einzelnen Commit gesquasht. Anstatt dass alle einzelnen Commits eines Mitarbeiters aus einem Themen-Branch angezeigt werden, werden die Commits in einem Commit kombiniert und in den Standard-Branch zusammengeführt. Pull-Requests mit gesquashten Commits werden mithilfe der Fast-Forward-Option zusammengeführt.
Zum Squashen und Zusammenführen von Pull-Requests musst Du im Repository über Schreibberechtigungen verfügen. Zudem muss im Repository Squash-Zusammenführung zulässig sein.
Mittels Squash und Merge kannst Du einen optimierteren Git-Verlauf in Deinem Repository erstellen. In Arbeit befindliche Commits sind hilfreich, wenn Du auf einem Feature-Branch arbeitest, sie müssen aber nicht unbedingt im Git-Verlauf beibehalten werden. Wenn Du diese Commits während dem Merge zum Standardbranch in einen Commit zusammenführst (squashen), kannst Du die ursprünglichen Änderungen in einem leeren Git-Verlauf beibehalten.
Rebase und Merge Ihrer Pull-Request-Commits durchführen
Wenn Du die Option Rebase and merge (Rebase und Merge) für einen Pull Request auf Ihre GitHub Enterprise Server-Instanz auswählst, werden alle Commits vom Themen-Branch (oder Head-Branch) ohne einen Merge-Commit einzeln auf dem Basis-Branch hinzugefügt. Pull Requests mit Rebased-Commits werden mithilfe der Fast-Forward-Option zusammengeführt.
Für das Rebasing und Mergen von Pull-Requests musst Du im Repository über Schreibberechtigungen verfügen. Zudem muss das Repository Rebase-Merging zulassen.
Das Rebase- und Merge-Verhalten auf GitHub Enterprise weicht etwas von git rebase
ab. Rebase und Merge auf GitHub aktualisiert jederzeit die Informationen zum Beitragenden und erstellt neue Commit-SHAs. Demgegenüber ändert git rebase
außerhalb von GitHub nicht die Informationen zum Beitragenden, wenn das Rebasing zusätzlich zu einem Vorgänger-Commit erfolgt. Weitere Informationen zu git rebase
findest Du im Kapitel zu „Git rebase“ im Pro Git-Buch.
Eine visuelle Darstellung von git rebase
findest Du im Kapitel „Git-Branching - Rebasing“ im Pro Git-Buch.
In folgenden Fällen ist kein automatisches Rebasing und Mergen auf Ihre GitHub Enterprise Server-Instanz möglich:
- Für den Pull Request liegen Mergekonflikte vor.
- Beim Rebasing der Commits vom Basis-Branch in den Head-Branch kommt es zu Konflikten.
- Das Rebasing der Commits gilt als „unsicher“, beispielsweise wenn ein Rebase ohne Mergekonflikte möglich ist, jedoch ein anderes Ergebnis liefern würde als ein Merge.
Wenn Sie trotzdem ein Rebasing der Commits durchführen möchten, aber kein automatischer Rebase auf Ihre GitHub Enterprise Server-Instanz möglich ist, müssen Sie folgendermaßen vorgehen:
- Führen Sie lokal ein Rebasing des Themen-Branches (oder Head-Branches) auf den Basis-Branch in der Befehlszeile durch.
- Beheben Sie alle Mergekonflikte in der Befehlszeile.
- Erzwingen Sie den Push der Rebase-Commits an den Themen-Branch (oder Remote-Head-Branch) des Pull Requests.
Alle Benutzer mit Schreibberechtigungen im Repository können dann die Änderungen über die Schaltfläche zum Rebasing und Mergen auf Ihre GitHub Enterprise Server-Instanz mergen.