Was sind Pull Requests?

Abgeschlossen

Wir beginnen mit:

  • Erläuterung von Branches und deren Wichtigkeit für Pull Requests
  • Definition von Pull Requests
  • Erfahren Sie, wie Sie ein Pull Request erstellen, den Pull Request-Status überprüfen und ein Pull Request zusammenführen.

Branches

Zunächst definieren wir, was Branches sind, warum sie für Entwickler*innen wichtig sind und in welcher Verbindung sie zu Pull Requests stehen.

Branches sind isolierte Arbeitsbereiche, in denen Sie entwickeln können, ohne dass sich dies auf andere im Repository auswirkt. Sie ermöglichen es Ihnen, Features zu entwickeln, Fehler zu beheben und bedenkenlos mit neuen Ideen in einem isolierten Bereich Ihres Repositorys zu experimentieren.

Dass Entwickler*innen an unabhängigen Branches arbeiten, ist zu einem gängigen Konzept in der modernen Softwareentwicklung geworden. Da jeder Entwickler über einen eigenen Branch verfügt, müssen sie sich bei Änderungen (Commits genannt) keine Gedanken über die Auswirkungen auf andere Entwickler machen, die an ihren eigenen Branches arbeiten.

Mergen von Branches

Obwohl es für die individuelle Produktivität vorteilhaft ist, wenn jede*r Entwickler*in an einem separaten Branch arbeitet, entsteht dadurch eine neue Herausforderung. Früher oder später muss jeder Branch der Entwickler*innen in einen gemeinsamen Branch wie main gemergt werden. Je größer Projekte werden, desto zahlreicher werden die Merges, und es wird immer wichtiger, jeden Merge nachzuverfolgen und zu überprüfen. Wenn Sie mehrere Änderungen an einem Projekt nachverfolgen müssen, kommen Pull Requests ins Spiel.

Was ist ein Pull Request?

Ein Pull Request ist eine Möglichkeit, Branchänderungen zu dokumentieren und mitzuteilen, dass die Änderungen aus dem Branch des Entwicklers oder der Entwicklerin bereit sind, mit dem Mainbranch (oder Basisbranch) gemergt zu werden. Über Pull Requests können Projektbeteiligte vorgeschlagene Änderungen überprüfen und besprechen, um sicherzustellen, dass die Codequalität im Basisbranch so hoch wie möglich ist.

Damit die beiden Branches gemergt werden können, müssen sie sich voneinander unterscheiden:

  • Der Vergleichsbranch ist der eigene Branch des Entwicklers, der die vorgenommenen Änderungen enthält.
  • Der Basisbranch, auch als Mainbranch bezeichnet, ist der Branch, mit dem die Änderungen gemergt werden müssen.

Die häufigste Verwendung des Vergleichs besteht darin, Verzweigungen zu vergleichen, z. B. wenn Sie eine neue Pullanforderung starten. Beim Erstellen eines neuen Pull Request werden Sie immer zur Branchvergleichsansicht weitergeleitet.

Erstellen eines Pull Requests

Sehen wir uns nun an, wie ein Pull Request erstellt wird.

  1. Navigieren Sie auf GitHub.com zur Hauptseite des Repositorys.

  2. Wählen Sie im Menü Branch den Branch aus, der Ihre Commits enthält.

    Screenshot des Erstellens eines neuen Branch und dessen Benennung.

  3. Wählen Sie über der Liste der Dateien auf dem gelben Banner die Schaltfläche Vergleich und Pull Request aus, um einen Pull Request für den zugehörigen Branch zu erstellen.

    Screenshot eines gelben Textfelds, in dem die grüne Schaltfläche zum Vergleichen und Abrufen der Anforderung hervorgehoben wird.

  4. Wählen Sie im Dropdownmenü base branch den Branch aus, mit dem Sie Ihre Änderungen mergen möchten. Wählen Sie dann das Dropdownmenü Branch vergleichen aus, um den Branch auszuwählen, in dem Sie Ihre Änderungen vorgenommen haben.

  5. Geben Sie einen Titel und eine Beschreibung für Ihren Pull Request ein.

  6. Um einen Pull Request zu erstellen, der fürs Review bereit ist, wählen Sie die Schaltfläche Create Pull Request aus. Um einen Pull-Request-Entwurf zu erstellen, wählen Sie die Dropdownliste aus und dann Create Draft Pull Request und Draft Pull Request aus.

Pull-Request-Status

Lassen Sie uns nun die verschiedenen Status von Pull Requests überprüfen.

  • Pull-Request-Entwurf: Wenn Sie einen Pull Request erstellen, können Sie entweder einen erstellen, der fürs Review bereit ist, oder einen Entwurf. Ein Pull Request mit dem Status „draft“ kann nicht gemergt werden, und Codebesitzer*innen werden nicht automatisch aufgefordert, Pull-Request-Entwürfe zu überprüfen.

  • Offener Pull Request: Der Status „open“ bedeutet, dass der Pull Request aktiv ist und noch nicht mit dem Basisbranch gemergt wurde. Sie können weiterhin Commits vornehmen und potenzielle Änderungen mit Projektmitarbeiter*innen besprechen und überprüfen.

  • Geschlossener Pull Request: Sie können einen Pull Request schließen, ohne ihn mit dem Basis-/Mainbranch zu mergen. Diese Option kann nützlich sein, wenn die im Branch vorgeschlagenen Änderungen nicht mehr benötigt werden oder eine andere Lösung in einem anderen Branch vorgeschlagen wird.

  • Gemergter Pull Request: Der Pull-Request-Status „merged“ bedeutet, dass die Änderungen und Commits aus dem Vergleichsbranch mit dem Basisbranch kombiniert wurden. Jede Person mit Push-Zugriff auf das Repository kann den Merge abschließen.

Zusammenführen eines Pull Requests

  1. Wählen Sie unter Ihrem Repositorynamen Pull requests aus.

    Screenshot der oberen Navigationsleiste eines Repositorys mit hervorgehobener Registerkarte „Pull Request“.

  2. Wählen Sie in der Liste Pull Requests die Pull Requests aus, die Sie mergen möchten.

  3. Scrolle bis zum Ende des Pull Requests. Je nach den Merge-Optionen, die für Dein Repository aktiviert sind, stehen Dir folgende Möglichkeiten zur Verfügung:

    • Mergen Sie alle Commits mit dem Basisbranch, indem Sie die Schaltfläche Merge pull request auswählen. Wenn die Option Merge Pull Request nicht angezeigt wird, wählen Sie im Dropdownmenü „Merge“ aus, wählen Sie die Option Erstellen eines Merge-Commits aus und wählen Sie dann die Schaltfläche Erstellen eines Merge-Commits aus.

      Screenshot des Dropdownmenüs der grünen Pull Request-Schaltfläche mit ausgewähltem Commit zum Erstellen eines Seriendrucks.

    • Durch Squashen und Mergen können Sie alle Ihre Commits zu einem kombinieren. Diese Option kann Ihnen helfen, den Repositoryverlauf übersichtlicher und besser organisiert zu halten. Wählen Sie die Option Squash and merge und dann die Schaltfläche Squash and merge aus.

    • Mit der Option Rebase and Merge können Sie Commits ohne Merge-Commit vornehmen. Mit dieser Option können Sie einen Merge überspringen, indem Sie einen linearen Projektverlauf beibehalten. Wählen Sie das Dropdownmenü „Merge“ aus, und wählen Sie dann die Option Rebase und Merge und schließlich die Schaltfläche Rebase und Merge aus.

  4. Wenn Sie dazu aufgefordert werden, geben Sie eine Commitnachricht ein, oder übernehmen Sie die Standardnachricht.

  5. Wenn Ihrem Konto auf GitHub.com mehrere E-Mail-Adressen zugeordnet sind, wählen Sie das Dropdownmenü „E-Mail-Adresse“ und dann die E-Mail-Adresse aus, die Sie als E-Mail-Adresse für den Git-Ersteller verwenden möchten. In diesem Dropdownmenü werden nur verifizierte E-Mail-Adressen angezeigt. Wenn Sie den Datenschutz für E-Mail-Adressen aktiviert haben, ist eine GitHub-E-Mail-Adresse ohne Antwortmöglichkeit die Standard-E-Mail-Adresse für Commitersteller.

    Screenshot einer Commit-Änderung mit einem Beschreibungsfeld und dem Dropdownmenü der E-Mail, die als Autor des Commits ausgewählt werden soll.

  6. Wählen Sie Merge bestätigen, Squash bestätigen oder Rebase bestätigen und Merge.

  7. Optional können Sie den Vergleichsbranch löschen, um die Liste der Branches in Ihrem Repository übersichtlich zu halten.

Als Nächstes folgt eine Übung, in der Sie das Wiederholte auf ein Praxisbeispiel anwenden.