So erstellen Sie einen Pull Request auf GitHub

0 Aktien
0
0
0
0

Einführung

Git ist ein Open-Source-System zur verteilten Versionsverwaltung, das die Verwaltung kollaborativer Softwareprojekte erleichtert. Viele Projekte speichern ihre Dateien in einem Git-Repository, und Plattformen wie GitHub haben das Teilen und Beitragen von Code zugänglich, wertvoll und effektiv gemacht.

Open-Source-Projekte, die in öffentlichen Repositories gehostet werden, profitieren von Beiträgen der breiteren Entwicklergemeinschaft durch Pull Requests. Mit diesen Pull Requests wird das Projekt aufgefordert, die vorgenommenen Änderungen am Code-Repository zu akzeptieren.

Dieses Tutorial führt Sie durch die Erstellung eines Pull Requests an ein Git-Repository über die Kommandozeile, damit Sie zu Open-Source-Softwareprojekten beitragen können.

Voraussetzungen

Sie müssen Git auf Ihrem lokalen Rechner installiert haben. Diese Anleitung hilft Ihnen zu überprüfen, ob Git auf Ihrem Computer installiert ist, und führt Sie durch den Installationsprozess für Ihr Betriebssystem.

Sie benötigen außerdem ein GitHub-Konto. Dies können Sie über die GitHub-Website github.com tun, indem Sie sich entweder anmelden oder ein Konto erstellen.

Seit November 2020 bietet GitHub keine passwortbasierte Authentifizierung mehr an. Um über die Kommandozeile auf GitHub-Repositories zuzugreifen, benötigen Sie daher ein persönliches Zugriffstoken oder müssen Ihre SSH-Schlüsselinformationen hinzufügen.

Abschließend müssen Sie ein Open-Source-Softwareprojekt finden, zu dem Sie beitragen möchten. In dieser Einführung erfahren Sie mehr über Open-Source-Projekte.

Erstellen Sie eine Kopie des Repositorys

Ein Repository, kurz Repo, ist im Wesentlichen das Stammverzeichnis eines Projekts. Es enthält alle relevanten Projektdateien, einschließlich der Dokumentation, und speichert außerdem den Bearbeitungsverlauf jeder Datei. Auf GitHub können Repositories mehrere Mitwirkende haben und öffentlich oder privat sein.

Um an einem Open-Source-Projekt mitzuarbeiten, benötigen Sie zunächst eine eigene Kopie des Repositorys. Dazu müssen Sie das Repository forken und anschließend klonen, um eine lokale Arbeitskopie zu erhalten.

Forke das Repository

Sie können ein Repository auf GitHub erstellen, indem Sie in Ihrem Browser die GitHub-URL des Open-Source-Projekts aufrufen, zu dem Sie beitragen möchten.

GitHub-Repository-URLs verweisen sowohl auf den Benutzernamen des Repository-Inhabers als auch auf den Repository-Namen. Beispielsweise ist die DigitalOcean Community (Benutzername: do-community) Eigentümerin des Projekt-Repositorys cloud_haiku, daher lautet die GitHub-URL für dieses Projekt:

https://github.com/do-community/cloud_haiku

Im obigen Beispiel ist do-community der Benutzername und cloud_haiku der Name des Repositorys.

Sobald Sie das Projekt identifiziert haben, zu dem Sie beitragen möchten, können Sie die URL aufrufen, die folgendermaßen formatiert ist:

https://github.com/username/repository

Alternativ können Sie das Projekt über die GitHub-Suchleiste suchen.

Wenn Sie sich auf der Startseite des Repositorys befinden, erscheint oben rechts auf der Seite, unterhalb Ihres Benutzersymbols, eine Schaltfläche „Fork“:

Klicken Sie auf die Schaltfläche „Fork“, um den Fork-Vorgang zu starten. Sie erhalten eine Benachrichtigung in Ihrem Browserfenster, dass das Repository, das Sie forken, verarbeitet wird.

Nach Abschluss des Vorgangs wird Ihr Browser auf eine Seite weitergeleitet, die der vorherigen Repository-Seite ähnelt, mit der Ausnahme, dass Sie oben Ihren Benutzernamen vor dem Repository-Namen sehen und dass auch in der URL Ihr Benutzername vor dem Repository-Namen steht.

Im obigen Beispiel sehen Sie also anstelle von do-community/cloud_haiku oben auf der Seite IhrBenutzername/cloud_haiku, und die neue URL sieht folgendermaßen aus:

https://github.com/your-username/cloud_haiku

Nachdem das Repository geforkt wurde, können Sie es klonen, um eine lokale Kopie der Codebasis zu erhalten.

Repository simulieren

Um eine eigene lokale Kopie des Repositorys zu erstellen, zu dem Sie beitragen möchten, öffnen wir zunächst ein Terminalfenster.

Wir verwenden den Befehl git clone zusammen mit einer URL, die auf Ihren Repository-Fork verweist.

Diese URL ist identisch mit der obigen URL, nur dass sie nun mit .git endet. Im obigen Beispiel cloud_haiku sähe die URL etwa so aus, wobei Sie Ihren tatsächlichen Benutzernamen durch Ihren Benutzernamen ersetzen:

https://github.com/your-username/cloud_haiku.git

Sie können die URL auch über die grüne Schaltfläche «⤓ Code» auf Ihrer Repository-Seite kopieren, die Sie von der Haupt-Repository-Seite getrennt haben. Nach dem Klicken auf die Schaltfläche können Sie die URL kopieren, indem Sie auf die Zwischenablage-Schaltfläche neben der URL klicken.

Sobald wir die URL haben, können wir das Repository klonen. Dazu kombinieren wir den Befehl `git clone` mit der Repository-URL aus der Befehlszeile in einem Terminalfenster:

git clone https://github.com/your-username/repository.git

Erstelle einen neuen Zweig

Bei der Arbeit an einem gemeinsamen Projekt haben Sie und andere Entwickler, die zum Repository beitragen, oft gleichzeitig unterschiedliche Ideen für neue Funktionen oder Fehlerbehebungen. Manche dieser neuen Funktionen lassen sich schnell implementieren, andere benötigen mehr Zeit. Daher ist es wichtig, das Repository zu verzweigen, um den Workflow zu verwalten, Ihren Code zu isolieren und zu kontrollieren, welche Funktionen in den Hauptzweig des Projekt-Repositorys übernommen werden.

Der erste Zweig eines Projekt-Repositorys wird üblicherweise als Master-Branch bezeichnet. Es empfiehlt sich, alle Änderungen im Master-Branch bereitzuhalten, sodass sie jederzeit von anderen genutzt werden können.

Hinweis: Im Juni 2020 hat GitHub seine Terminologie aktualisiert und bezeichnet Standard-Quellcode-Branches nun als „Master-Branches“ anstatt „Master-Branches“. Falls Ihr Standard-Branch weiterhin als „Master“ angezeigt wird, können Sie ihn in den Einstellungen für Standard-Branches entsprechend aktualisieren.

 

Wenn Sie einen Branch basierend auf einem bestehenden Projekt erstellen, sollten Sie diesen vom übergeordneten Branch ableiten. Achten Sie außerdem darauf, dass der Branchname aussagekräftig ist. Anstatt ihn beispielsweise „mein-Branch“ zu nennen, verwenden Sie etwas wie „frontend-hook-migration“ oder „fix-documentation-type“.

Um im Terminalfenster einen Branch zu erstellen, wechseln wir in das Repository-Verzeichnis. Achten Sie darauf, den tatsächlichen Repository-Namen (z. B. cloud_haiku) zu verwenden, um in dieses Verzeichnis zu wechseln.

cd repository

Jetzt erstellen wir mit dem Befehl `git branch` einen neuen Branch. Vergeben Sie ihm unbedingt einen aussagekräftigen Namen, damit andere Projektmitarbeiter wissen, woran Sie arbeiten.

git branch new-branch

Nachdem unser neuer Branch erstellt wurde, können wir ihn mit dem Befehl `git checkout` bearbeiten:

git checkout new-branch

Nach Eingabe des Befehls „git checkout“ erhalten Sie folgende Ausgabe:

Output
Switched to branch 'new-branch'

Sie können die beiden oben genannten Befehle auch komprimieren, indem Sie einen neuen Zweig erstellen und zu diesem wechseln, mit dem folgenden Befehl und dem Flag -b:

git checkout -b new-branch

Um zum ursprünglichen Zustand zurückzukehren, verwenden Sie den Befehl „checkout“ mit dem ursprünglichen Branch-Namen:

git checkout main

Der Checkout ermöglicht es Ihnen, zwischen mehreren Branches zu wechseln, sodass Sie gleichzeitig an mehreren Funktionen arbeiten können.

An diesem Punkt können Sie nun bestehende Dateien bearbeiten oder neue Dateien zum Projekt in Ihrem Branch hinzufügen.

Veränderungen vor Ort vornehmen

Um das Erstellen eines Pull Requests zu demonstrieren, verwenden wir das Beispiel-Repository cloud_haiku und erstellen eine neue Datei in unserer lokalen Kopie. Verwenden Sie Ihren bevorzugten Texteditor, um eine neue Datei zu erstellen, damit wir ein neues Haiku-Gedicht hinzufügen können, wie in der Hilfe beschrieben. Wir können beispielsweise nano verwenden und unsere Beispieldatei dateiname.md nennen. Sie sollten Ihre Datei mit ihrem ursprünglichen Namen und der Endung .md für Markdown benennen.

nano filename.md

Als Nächstes fügen wir der neuen Datei Text hinzu und folgen dabei den Anweisungen in der Hilfe. Wir verwenden dazu die Jekyll-Vorlage und fügen ein Haiku mit Zeilenumbrüchen ein. Die unten stehende Datei ist eine Beispieldatei; Sie müssen ein eigenes Haiku verfassen.

---
layout: haiku
title: Octopus Cloud
author: Sammy
---
Distributed cloud <br>
Like the octopuses' minds <br>
Across the network <br>

Nachdem Sie Ihren Text eingegeben haben, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, drücken Sie dazu STRG + X, dann Y und anschließend die Eingabetaste.

Nachdem Sie eine bestehende Datei geändert oder eine neue Datei zu Ihrem Projekt hinzugefügt haben, können Sie diese in Ihrem lokalen Repository bereitstellen. Dies geschieht mit dem Befehl `git add`. In unserem Beispiel für die Datei `filename.md` würden wir folgenden Befehl eingeben.

git add filename.md 

Wir haben den Namen der erstellten Datei an diesen Befehl übergeben, um sie in unserem lokalen Repository bereitzustellen. Dadurch wird sichergestellt, dass Ihre Datei zum Hinzufügen bereit ist.

Wenn Sie alle geänderten Dateien in ein bestimmtes Verzeichnis verschieben möchten, können Sie sie mit folgendem Befehl zusammenführen:

git add .

Hier fügt der Punkt alle relevanten Dateien hinzu.

Wenn Sie alle Änderungen rekursiv hinzufügen möchten, einschließlich Änderungen in Unterverzeichnissen, können Sie Folgendes eingeben:

git add -A

Alternativ können Sie den Befehl `git add -all` eingeben, um alle neuen Dateien zum Staging-Bereich hinzuzufügen.

Durch das Staging unserer Datei möchten wir die Änderungen, die wir vorgenommen haben, mit dem Befehl git commit im Repository speichern.

Änderungen vornehmen

Die Commit-Nachricht ist ein wichtiger Bestandteil Ihres Codebeitrags. Sie hilft den Projektverantwortlichen und anderen Mitwirkenden, die vorgenommene Änderung, deren Zweck und Bedeutung vollständig zu verstehen. Darüber hinaus dokumentieren Commit-Nachrichten die Änderungen am gesamten Projekt und unterstützen so zukünftige Mitwirkende.

Bei sehr kurzen Nachrichten können wir diese mit dem Parameter `-m` und der Nachricht in Anführungszeichen angeben. In unserem Beispiel mit dem Hinzufügen eines Haikus könnte der Git-Commit etwa so aussehen:.

git commit -m "Added a new haiku in filename.md file"

Sofern es sich nicht um eine geringfügige oder erwartete Änderung handelt, sollten wir eine ausführlichere Commit-Nachricht hinzufügen, damit unsere Mitwirkenden umfassend über unseren Beitrag informiert sind. Um diese ausführlichere Nachricht zu speichern, führen wir den Befehl `git commit` aus, der den Standard-Texteditor öffnet.

git commit

Wenn Sie diesen Befehl ausführen, befinden Sie sich möglicherweise im Vim-Editor, den Sie mit dem Befehl `:q` verlassen können. Um Ihren Standardtexteditor zu konfigurieren, verwenden Sie den Befehl `git config` und legen Sie beispielsweise `nano` als Standardeditor fest:

git config --global core.editor "nano"

oder vim:

git config --global core.editor "vim"

Nach Ausführung des Befehls „git commit“ sollte, abhängig vom verwendeten Standard-Texteditor, in Ihrem Terminalfenster ein Dokument angezeigt werden, das Sie bearbeiten können und das in etwa so aussieht:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch new-branch
# Your branch is up-to-date with 'origin/new-branch'.
# Changes to be committed:
# modified: new-feature.py

Unterhalb der einleitenden Kommentare müssen Sie die Commit-Nachricht in die Textdatei einfügen.

Um eine aussagekräftige Commit-Nachricht zu verfassen, sollten Sie in der ersten Zeile eine Zusammenfassung von etwa 50 Zeichen einfügen. In diesem Abschnitt, der in übersichtliche Unterabschnitte gegliedert ist, sollten Sie erläutern, warum die Änderung vorgenommen wurde, wie der Code funktioniert und zusätzliche Informationen hinzufügen, die anderen Prüfern beim Zusammenführen der Änderungen die Arbeit verständlich machen. Versuchen Sie, so hilfreich und proaktiv wie möglich zu sein, damit die Projektverantwortlichen Ihren Beitrag vollständig nachvollziehen können.

Veränderungen vorantreiben

Nachdem Sie die Textdatei mit den Commit-Nachrichten gespeichert und die Seite geschlossen haben, können Sie mit dem folgenden Befehl überprüfen, was Git committet hat:

git status

Je nach den vorgenommenen Änderungen erhalten Sie eine Ausgabe, die in etwa wie folgt aussieht:

Output
On branch new-branch
nothing to commit, working tree clean

An dieser Stelle können Sie den Befehl `git push` verwenden, um die Änderungen auf den aktuellen Branch Ihres geforkten Repositorys anzuwenden:

git push --set-upstream origin new-branch

Dieser Befehl liefert Ihnen eine Ausgabe, die Sie über den Fortschritt informiert und in etwa wie folgt aussieht:

Output
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 336 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/your-username/repository.git
a1f29a6..79c0e80 new-branch -> new-branch
Branch new-branch set up to track remote branch new-branch from origin.

Sie können nun auf Ihrer GitHub-Webseite zum geforkten Repository gehen und zu dem Branch navigieren, den Sie gepusht haben, um die vorgenommenen Änderungen im Browser zu sehen.

An dieser Stelle ist es möglich, einen Pull an das Haupt-Repository anzufordern. Falls Sie dies noch nicht getan haben, müssen Sie sicherstellen, dass Ihr lokales Repository mit dem Upstream-Repository auf dem neuesten Stand ist.

Aktualisierung des lokalen Repositorys

Während Sie mit anderen an einem Projekt arbeiten, müssen Sie Ihr lokales Repository stets auf dem neuesten Stand halten. So vermeiden Sie Konflikte durch Pull Requests (auch wenn Konflikte in Projekten mit gemeinsam genutztem Code unvermeidbar sind). Um Ihre lokale Version des Quellcodes aktuell zu halten, müssen Sie Änderungen synchronisieren.

Zuerst konfigurieren wir eine Fernbedienung für die Gabel und synchronisieren dann die Gabel.

Konfigurieren Sie eine Fernbedienung für die Gabel

Remote-Repositories ermöglichen die Zusammenarbeit mit anderen an einem Git-Projekt. Jedes Remote-Repository ist eine Version des Projekts, die im Internet oder in einem Netzwerk gehostet wird, auf das Sie Zugriff haben. Abhängig von Ihren Benutzerrechten steht Ihnen jedes Remote-Repository entweder als Lese- oder als Schreibzugriff zur Verfügung.

Um Änderungen in einem Fork mit dem Haupt-Repository zu synchronisieren, müssen Sie ein Remote-Repository konfigurieren, das auf das Upstream-Repository verweist. Die Einrichtung des Remote-Repositorys ist nur einmal im Upstream-Repository erforderlich.

Prüfen wir zunächst, welche Remote-Repositories Sie konfiguriert haben. Der Befehl `git remote` listet alle zuvor angegebenen Remote-Repositories auf. Wenn Sie also Ihr Repository wie oben beschrieben klonen, erhalten Sie zumindest eine Ausgabe für das Quell-Repository, den Standardnamen von Git für das geklonte Verzeichnis.

Wechseln Sie im Terminalfenster in das Repository-Verzeichnis und verwenden Sie den Befehl `git remote` mit dem Flag `-v`, um die von Git gespeicherten URLs zusammen mit ihren entsprechenden Remote-Kurznamen (wie z. B. "origin") anzuzeigen:

git remote -v

Da wir ein Repository simuliert haben, sollte unsere Ausgabe in etwa so aussehen:

Output
origin https://github.com/your-username/forked-repository.git (fetch)
origin https://github.com/your-username/forked-repository.git (push)

Falls Sie bereits mehr als ein Remote-Repository eingerichtet haben, listet der Befehl git remote -v alle auf.

Als Nächstes geben wir ein neues Remote-Repository an, das mit dem Fork synchronisiert werden soll. Dies ist das ursprüngliche Repository, von dem wir den Fork erstellt haben. Wir verwenden dazu den Befehl `git remote add`.

git remote add upstream https://github.com/original-owner-username/original-repository.git

Für unser Beispiel cloud_haiku würde dieser Befehl wie folgt lauten:

git remote add upstream https://github.com/do-community/cloud_haiku.git

In diesem Beispiel ist “Upstream” der Kurzname des Remote-Repositorys, da „Upstream“ in Git-Begriffen das Repository bezeichnet, von dem wir geklont haben. Wenn wir einen Remote-Verweis auf das Repository eines Mitarbeiters hinzufügen möchten, sollten wir dessen Benutzernamen oder einen Kurznamen verwenden.

Mit dem Befehl `git remote -v` im Repository-Verzeichnis können wir erneut überprüfen, ob unser Remote-Zeiger korrekt zum Upstream-Repository hinzugefügt wurde:

git remote -v
Output
origin https://github.com/your-username/forked-repository.git (fetch)
origin https://github.com/your-username/forked-repository.git (push)
upstream https://github.com/original-owner-username/original-repository.git (fetch)
upstream https://github.com/original-owner-username/original-repository.git (push)

Jetzt können Sie in der Befehlszeile auf das Upstream-Repository verweisen, anstatt die gesamte URL einzugeben, und Sie sind bereit, Ihren Fork mit dem Haupt-Repository zu synchronisieren.

Synchronisiere die Gabel

Sobald wir ein Remote-Repository konfiguriert haben, das auf das Upstream- und Master-Repository auf GitHub verweist, können wir unseren Repository-Fork synchronisieren, um ihn auf dem neuesten Stand zu halten.

Um unseren Fork zu synchronisieren, verwenden wir in einem Terminalfenster aus unserem lokalen Repository-Verzeichnis den Befehl `git fetch`, um die Branches zusammen mit den zugehörigen Commits aus dem Upstream-Repository abzurufen. Da wir den Kurznamen “upstream” für das Upstream-Repository verwendet haben, übergeben wir diesen an den Befehl.

git fetch upstream

Je nachdem, wie viele Änderungen seit dem Forken des Repositorys vorgenommen wurden, kann Ihre Ausgabe variieren und mehrere Zeilen zum Zählen, Komprimieren und Entpacken von Objekten enthalten. Ihre Ausgabe wird den folgenden Zeilen ähneln, kann aber je nach Anzahl der Branches im Projekt abweichen:

Output
From https://github.com/original-owner-username/original-repository
* [new branch] main -> upstream/main

Commits an den Hauptzweig werden nun in einem lokalen Zweig namens upstream/main gespeichert.

Wechseln wir zum lokalen Master-Branch unseres Repositorys:

git checkout main
Output
Switched to branch 'main'

Nun führen wir alle Änderungen, die am Hauptzweig des Haupt-Repositorys vorgenommen wurden und auf die wir über unseren lokalen Upstream-/Hauptzweig Zugriff haben, in unseren lokalen Master-Zweig zusammen:

git merge upstream/main

Die Ausgabe hier wird anders aussehen, beginnt aber mit einem Update, falls Änderungen vorgenommen wurden oder die Daten bereits aktuell sind. Falls seit dem Forken des Repositorys keine Änderungen vorgenommen wurden, wird eine entsprechende Meldung angezeigt.

Der Master-Branch Ihres Forks ist nun mit dem Upstream-Repository synchronisiert, und die von Ihnen vorgenommenen lokalen Änderungen sind nicht verloren gegangen.

Je nach Ihrem Workflow und dem Zeitaufwand für Änderungen können Sie Ihren Fork so oft mit dem Upstream-Code im Haupt-Repository synchronisieren, wie es für Sie sinnvoll ist. Sie sollten Ihren Fork jedoch unbedingt unmittelbar vor dem Erstellen eines Pull Requests synchronisieren, um zu vermeiden, dass Sie automatisch in Konflikt stehenden Code übertragen.

Pull Request

An diesem Punkt sind Sie bereit, einen Pull Request an das Haupt-Repository zu senden.

Sie müssen zu Ihrem Fork-Repository gehen und auf der linken Seite des Bildschirms auf die Schaltfläche „Neuer Pull Request“ klicken.

Auf der nächsten Seite können Sie den Branch ändern. Auf jeder Seite können Sie im Dropdown-Menü das entsprechende Repository und den gewünschten Branch auswählen.

Wenn Sie beispielsweise links den Haupt-Repository-Branch und rechts Ihren neuen Fork-Repository-Branch auswählen, sollte eine Meldung erscheinen, die anzeigt, dass Ihre Branches zusammengeführt werden können. Falls kein konkurrierender Code vorhanden ist:

Sie müssen einen Titel und einen Kommentar in die entsprechenden Felder einfügen und anschließend auf die Schaltfläche „Pull Request erstellen“ klicken.

An diesem Punkt entscheiden die Hauptverantwortlichen des Repositorys, ob Ihr Pull Request angenommen wird oder nicht. Sie können Sie bitten, Ihren Code zu bearbeiten oder zu korrigieren, indem Sie vor der Annahme des Pull Requests eine Code-Überprüfung einreichen.

Ergebnis

Sie haben nun erfolgreich einen Pull Request an ein Open-Source-Software-Repository übermittelt. Aktualisieren und ändern Sie Ihren Code, während Sie auf die Überprüfung warten. Die Projektverantwortlichen bitten Sie möglicherweise um eine Überarbeitung Ihres Codes; seien Sie daher darauf vorbereitet.

Die Teilnahme an Open-Source-Projekten – und die aktive Mitarbeit an Open-Source-Entwicklerprojekten – kann eine bereichernde Erfahrung sein. Durch regelmäßige Beiträge zu Software, die Sie häufig nutzen, tragen Sie dazu bei, dass diese für andere Endnutzer so wertvoll wie möglich ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen