Pull Requests lokal auschecken
Wenn Ihnen jemand einen Pull Request von einem Fork oder Branch Ihres Repositorys sendet, möchten Sie den Pull Request möglicherweise lokal mergen, um einen Mergekonflikt zu beheben oder die Änderungen vor dem Mergen auf GitHub auf Ihrem lokalen Computer zu testen.
Inhalt dieses Artikels
- Einen aktiven Pull Request lokal ändern
- Einen inaktiven Pull Request lokal ändern
- Fehler: Pushen einiger Refs fehlgeschlagen
Hinweis: Sie können die Person, die den Pull Request erstellt hat, darum bitten, es allen Benutzern mit Push-Zugriff auf das vorgelagerte Repository zu erlauben, Commits zu ihrem Pull Request zu pushen, damit sie ihre Arbeit schneller mergen können. Weitere Informationen finden Sie unter „Änderungen an einem Pull-Request-Branch zulassen, der von einem Fork erstellt wurde“.
Einen aktiven Pull Request lokal ändern
-
Under your repository name, click Pull requests.
-
Klicken Sie in der Liste der Pull Requests auf den Pull Request, den Sie mergen möchten.
-
Klicken Sie ziemlich unten im Pull Request im Merge-Feld auf command line instructions (Anleitungen für die Befehlszeile). Führen Sie nacheinander die Schritte durch, um den vorgeschlagenen Pull Request herunterzuladen.
-
Um die vorgeschlagenen Änderungen in GitHub Desktop anzuzeigen, können Sie optional auch auf open this in GitHub Desktop (In GitHub Desktop öffnen) klicken.
Einen inaktiven Pull Request lokal ändern
Ein inaktiver Pull Request ist ein Pull Request, dessen Inhaber nicht mehr antwortet oder, was wahrscheinlicher ist, seinen Fork gelöscht hat. Wenn ein Fork gelöscht wurde, ist das Mergen des Pull Requests noch möglich. Wenn Sie jedoch einen Pull Request ändern und der Autor nicht antwortet, müssen Sie einige zusätzliche Schritte durchführen, um den Pull Request zu aktualisieren.
Wenn ein Pull Request geöffnet wurde, speichert GitHub alle Änderungen online für Sie. Anders gesagt: Commits in einem Pull Request sind in einem Repository schon vor dem Mergen des Pull Requests verfügbar. Das bedeutet, dass Sie einen offenen Pull Request abrufen und als Ihren eigenen erneut erstellen können.
Jeder kann einen zuvor geöffneten Pull Request weiter bearbeiten, testen oder sogar einen neuen Pull Request mit zusätzlichen Änderungen öffnen. Aber nur Mitarbeiter mit Push-Zugriff können Pull Requests mergen.
-
Under your repository name, click Issues or Pull requests.
-
Klicken Sie in der Liste „Pull Requests“ auf den Pull Request, den Sie mergen möchten.
-
Ermitteln Sie die ID-Nummer des inaktiven Pull Requests. Die ID ist die Ziffernfolge direkt hinter dem Titel des Pull Requests.
-
Open TerminalTerminalGit Bash.
-
Rufen Sie den Verweis zum Pull Request basierend auf seiner ID-Nummer ab, und erstellen Sie dabei einen neuen Branch.
$ git fetch origin pull/ID/head:BRANCHNAME
-
Wechseln Sie zu dem neuen Branch, der auf diesem Pull Request basiert:
[master] $ git checkout BRANCHNAME > Switched to a new branch 'BRANCHNAME'
-
An dieser Stelle können Sie mit diesem Branch machen, was Sie möchten. Sie können lokale Tests ausführen oder andere Branches in diesen Branch mergen, darunter auch seinen
master
. Nehmen Sie alle gewünschten Änderungen vor. -
Wenn Sie fertig sind, können Sie den neuen Branch übertragen:
[pull-inactive-pull-request] $ git push origin BRANCHNAME > Counting objects: 32, done. > Delta compression using up to 8 threads. > Compressing objects: 100% (26/26), done. > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done. > Total 29 (delta 8), reused 0 (delta 0) > To https://Hostname/username/repository.git > * [new branch] BRANCHNAME -> BRANCHNAME
-
Erstellen Sie einen neuen Pull Request mit Ihrem neuen Branch.
Fehler: Pushen einiger Refs fehlgeschlagen
Der Remote-Namespace refs/pull/
ist schreibgeschützt. Wenn Sie versuchen, Commits dorthin zu pushen, wird die folgende Fehlermeldung angezeigt:
! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref)
error: failed to push some refs to 'git@github.local:USERNAME/REPOSITORY.git'
Tipp: Wenn Sie einen Remote-Verweis entfernen oder umbenennen, wirken sich Aufrufe von git-remote
nicht auf Ihren lokalen Namespace refs/pull/origin
aus.