Was sind Git-Pull-Requests und wie werden sie verwendet?

0
326

Pull Requests sind eine Funktion von Online-Git-Diensten wie Github und Gitlab. Sie ermöglichen es jedem, das Hinzufügen von Änderungen anzufordern, auch wenn er keinen Zugriff auf das Repository hat. Wir besprechen, wie sie funktionieren und wie man sie für die Open-Source-Zusammenarbeit verwendet.

Was bewirkt ein Pull Request?

Trotz allem, wie es erscheinen mag, ist git als Tool ein vollständig dezentralisiertes System. Das bedeutet, dass sich das Repository auf Github.com und das Repository auf Ihrem lokalen Computer nicht unterscheiden. Sie verbinden sich nicht mit Github, um an einem Repository zu arbeiten, sondern kopieren den Code von Github in Ihr lokales Repository und arbeiten dort daran.

Wenn Sie Änderungen per Push übertragen möchten, können Sie Commits durchführen und git push ausführen, um Ihre Aktualisierungen an eine bestimmte “Remote” Dies kann jedes andere Git-Repository sein, ist aber normalerweise ein online gehosteter Dienst wie Github, Bitbucket oder Gitlab. Dadurch wird das Remote-Repository aktualisiert, damit es mit Ihrem Repository synchronisiert wird.

Dies funktioniert jedoch nur, wenn Sie die Berechtigung zum Pushen von Commits haben, die normalerweise mit einem Passwort oder einem SSH-Schlüssel konfiguriert ist. Dies wird nur an Mitglieder der Organisation ausgegeben, die die Kontrolle über das Repo haben, da sonst jeder die Git-Historie ändern könnte. Wenn Sie kein Mitglied der Organisation sind, was können Sie tun, wenn Sie Änderungen vornehmen möchten?

Nun, es gibt eine zweite Möglichkeit, ein Git-Repository zu aktualisieren&#8212 ;git ziehen. Sie tun dies wahrscheinlich oft, wenn Ihre Kollegen Änderungen vornehmen, die vorangetrieben werden. In diesem Fall ziehen Sie Commits aus dem Remote-Repository herunter und synchronisieren es mit Ihrem lokalen Repository.

Werbung

Da Git jedoch dezentralisiert ist, gibt es wirklich keinen Unterschied zwischen Ihrem Repository und dem Remote-Repository. Sie können git pull sogar umgekehrt vom Server aus ausführen, und dies ist das Herzstück dessen, was Pull-Anfragen funktionieren lässt.

Bei einem Pull-Request teilen Sie dem Remote-Server (und den Leuten, die ihn verwalten) lediglich mit, dass Sie einige aktualisierte Commits haben, die er sich ansehen und in das Remote-Repository integrieren soll. Wenn sie die Änderungen akzeptieren, führt das Remote-Repository git pull gegen Ihr lokales Repository aus und integriert den Code, ohne dass Sie dafür jemals einen SSH-Schlüssel autorisiert haben müssen.

Das Rückgrat der Open-Source-Zusammenarbeit

Pull-Requests werden ständig für Open-Source-Bibliotheken verwendet. Schließlich liegt ein Großteil der Gründe für Open Source darin, dass jeder Entwickler zum Projekt beitragen kann, wenn sein Code nützlich ist.

Pull-Requests machen das möglich. Die Projektbetreuer, die Administratoren, die es kontrollieren, sind diejenigen, die normalerweise Pull-Requests überprüfen und entscheiden, ob der Code integriert werden soll oder ob bestimmte Fehler behoben werden müssen, bevor er fertig ist.< /p>

Pull-Anfragen sind nicht gerade eine Funktion von git selbst, daher variiert ihre genaue Implementierung je nach Dienst. Aber für Github finden Sie Pull-Requests in der Menüleiste eines Repositorys, die eine Liste offener und geschlossener Requests anzeigt, durch die Sie filtern können.

Wenn Sie auf einen von ihnen klicken, können Sie die Kommentare des Anforderers sowie die damit verbundenen Commits anzeigen.

Werbung

Wenn Sie der Betreuer des Repositorys sind, können Sie die Anfrage überprüfen und zusammenführen. Wenn Sie Probleme damit haben, die Sie besprechen müssen, können Sie einen Kommentar hinterlassen und gemeinsam am Code arbeiten. Dies ist ein wichtiger Grund, warum sich öffentliche Räume wie Github hervorragend für die Open-Source-Zusammenarbeit eignen. Selbst etwas so Einfaches wie das Ändern des Wortlauts der Dokumentation kann von jedem gemeinsam durchgeführt werden.

Pull Requests unterscheiden sich von Issues. Die Problemverfolgung ist eine Funktion vieler Dienste wie Github, die eine einfache Fehlerbehebung und öffentliche Zusammenarbeit für neue Funktionen ermöglicht. Im Wesentlichen hat jede Ausgabe ein Thema, das von den Betreuern und der Community diskutiert werden kann. dotnet/csharplang ist beispielsweise das offizielle Repository für Diskussionen darüber, wie C# als Programmiersprache konzipiert ist. Wenn Sie sich die Themen ansehen, werden Sie viele Leute finden, die Konzepte für zukünftige Iterationen der Sprache diskutieren:

Nicht alle Probleme führen zu Pull-Requests. Wenn das Problem vom Betreuer behoben wird, spielt es keine Rolle. Wenn das Problem von einem Mitarbeiter behoben wird, muss dieser einen Pull-Request einreichen.

Alle Pull-Requests werden entweder abgelehnt oder führen direkt zu Codeänderungen im Repository. Probleme sind nur eine Möglichkeit, den Entwicklungsfortschritt zu verfolgen und welche Fehler behoben werden müssen.

Pull-Requests stellen

Auch hier die genaue Die Schritte dafür variieren je nach verwendetem Dienst, aber die meisten Open-Source-Zusammenarbeit findet auf Github statt, daher zeigen wir die Schritte dafür.

Gehen Sie zu dem Repository, für das Sie eine Anfrage stellen möchten, und klicken Sie auf “Neue Pull-Anfrage” unter der Registerkarte Pull Requests:

Werbung

Du habe hier zwei Möglichkeiten. Wenn Sie Mitglied des Repositorys sind und Ihren Feature-Branch mit dem Master-Branch zusammenführen möchten, können Sie die beiden Branches auswählen.

Wenn Sie an einer Open-Source-Datei arbeiten Repository, müssen Sie das Repository forken und unter Ihrem eigenen Konto an Github pushen. Anschließend können Sie “Vergleich zwischen Gabeln” auswählen. um Ihren Master-Branch mit seinem Master-Branch zusammenzuführen.

Einmal Wenn Sie fertig sind, wird der Pull-Request zur Diskussion gestellt und Sie müssen einfach warten, bis Sie von den Betreuern eine Antwort erhalten.

In der Zwischenzeit können Sie den Status aller Pull-Requests, an denen Sie beteiligt sind, mit der “Pull-Requests” Tab in der Hauptkopfzeile.