Ich möchte eine zuvor erstellte Pull-Anfrage (erstellt über die GitHub-Weboberfläche) auschecken. Ich suchte und fand verschiedene Orte, an denen ein refs / pull oder refs / pull / pr
Aber wenn ich fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
zur Git-Konfigurationsdatei hinzufüge und einen Git-Abruf mache
Was mache ich falsch? Sollte GitHub das Pull / XYZ-Zeug automatisch erstellen oder muss ich etwas konfigurieren?
git
github
pull-request
git-checkout
GarfieldKlon
quelle
quelle
Antworten:
Um eine Remote-PR in Ihr lokales Repo zu holen,
Wo
ID
ist die Pull-Anforderungs-ID undBRANCHNAME
der Name des neuen Zweigs, den Sie erstellen möchten. Sobald Sie den Zweig erstellt haben, dann einfachWeitere Informationen finden Sie in der offiziellen GitHub-Dokumentation .
quelle
git fetch origin pull/1/head:githubusername
nicht so aus, wie ich es erwartet hatteBRANCHNAME
ist das, was Sie den Zweig benennen möchten. Ich vermute, Sie haben versucht, einen Namen zu verwenden, der bereits vorhanden war (z. B.master
) und der nicht funktioniert hat. Sie haben also Ihren Benutzernamen ausprobiert, der funktioniert hat, weil es keinen Zweig mit diesem Namen gab. Vielleicht verstehe ich falsch, was Sie gesagt haben.origin
auf Ihre Gabel undupstream
- auf das ursprüngliche Repository verweist ( siehe beispielsweise help.github.com/articles/configuring-a-remote-for-a-fork ). Achten Sie darauf , zu ändern ,origin
umupstream
in dem genannten Befehl, wenn Sie Pull - Anforderung von der ursprünglichen Repo holen wollen.Dies wird abgerufen, ohne dass Sie einen Zweig benennen müssen:
Wie erhalte ich eine bestimmte Pull-Anfrage auf meinem Computer?
quelle
Dieser Kern beschreibt, was passiert ist, wenn Sie einen Git-Abruf durchführen:
In den Ausgaben 259 sind verschiedene Skripte aufgeführt, um diese Aufgabe zu automatisieren.
Das git-extras- Projekt schlägt den Befehl vor
git-pr
(implementiert in PR 262 ).git-pr
(1) - Checkt eine Pull-Anfrage lokal ausquelle
Ich ziehe es vor, abzurufen und auszuchecken, ohne einen lokalen Zweig zu erstellen, und mich im Status "HEAD losgelöst" zu befinden . Dadurch kann ich die Pull-Anforderung schnell überprüfen, ohne meinen lokalen Computer mit unnötigen lokalen Zweigen zu belasten.
git fetch upstream pull/ID/head && git checkout FETCH_HEAD
Wo
ID
ist eine Pull-Anforderungs-ID undupstream
wo ist die ursprüngliche Pull-Anforderung erstellt worden (könnte esorigin
zum Beispiel sein).Ich hoffe, es hilft.
quelle
Unter Bezugnahme auf Steven Pennys Antwort ist es am besten, einen Testzweig zu erstellen und die PR zu testen. Also hier ist, was Sie tun würden.
git checkout -b test
git pull origin pull/939/head:test
Jetzt können Sie die Änderungen in diesem lokalen Testzweig (in diesem Fall als Test bezeichnet ) sicher testen und, sobald Sie zufrieden sind, wie gewohnt von GitHub zusammenführen.
quelle
test
Zweig setzen und DANN die PR ziehen - auf diese Weise muss ich keine Zweige lokal wiederherstellen, wenn ich fertig bin. Ich entsorge nur den Arbeitsbaum. Tatsächlichcheckout -b
mache ich NIE mehr - ich erstelle immer einen Arbeitsbaum und verzweige dann. Festplatte ist billig. Natürlich habe ich ein Skript, das dies tut; Ich gebe nicht alle benötigten Befehle einzeln ein.Wenn Sie Github.com verwenden, gehen Sie zu "Pull-Anforderungen", klicken Sie auf die entsprechende Pull-Anforderung und dann auf den Link "Befehlszeilenanweisungen":
quelle
Mit dem
git config
Befehl können Sie eine neue Regel schreiben.git/config
, um Pull-Anforderungen aus dem Repository abzurufen:Und dann einfach:
quelle
Das Problem mit einigen der oben genannten Optionen ist, dass jemand, der nach dem Öffnen der PR mehr Commits an die PR sendet, nicht die aktuellste Version erhält. Für mich hat es am besten funktioniert: Gehen Sie zur PR und drücken Sie 'Commits', scrollen Sie nach unten , um den neuesten Commit-Hash zu sehen, und verwenden Sie dann einfach git checkout, d. H.
git checkout <commit number>
im obigen Beispiel
git checkout 0ba1a50
quelle
git fetch origin pull/ID/head:BRANCHNAME
in stackoverflow.com/a/30584951/659732 erwähnten Ansatz getroffen . Danke für die Lösung!Ich verwende Hub, ein Tool von Github: https://github.com/github/hub
Mit dem Auschecken eines Hubs vor Ort ist eine Pull-Anfrage vor Ort ganz einfach:
quelle
Für Bitbucket müssen Sie das Wort
pull
durch ersetzenpull-requests
.Zunächst können Sie den URL-Stil der Pull-Anforderung per
git ls-remote origin
Befehl bestätigen.Wie Sie sehen können, ist es
refs/pull-requests/1503/from
stattrefs/pull/1503/from
Dann können Sie die Befehle einer der Antworten verwenden.
quelle
Ich habe aus Versehen fast das gleiche geschrieben, wie es von Git-Extras bereitgestellt wurde. Wenn Sie also einen einzelnen benutzerdefinierten Befehl bevorzugen, anstatt eine Reihe anderer zusätzlicher Befehle zu installieren, platzieren Sie diese
git-pr
Datei einfach irgendwo in Ihrem$PATH
und dann können Sie einfach schreiben:quelle
Wenn Sie dem Workflow "Github Fork" folgen, in dem Sie eine Fork erstellen und das Remote-Upstream-Repo hinzufügen:
Um in Ihren aktuellen Zweig zu gelangen, würde Ihr Befehl folgendermaßen aussehen:
Um in einen neuen Zweig zu ziehen, würde der Code folgendermaßen aussehen:
quelle
Github hat kürzlich ein CLI- Dienstprogramm namens Github-Cli veröffentlicht . Nach der Installation können Sie den Zweig einer Pull-Anfrage lokal anhand seiner ID auschecken
z.B:
gh pr checkout 2267
Beachten Sie, dass sich dieses Paket noch in der Beta befindet
quelle
Holen Sie sich den Remote-PR-Zweig in den lokalen Zweig:
git fetch origin ‘remote_branch’:‘local_branch_name’
Stellen Sie den Upstream der lokalen Verzweigung auf die Remote-Verzweigung ein.
git branch --set-upstream-to=origin/PR_Branch_Name local_branch
Wenn Sie die lokalen Änderungen erneut in den PR-Zweig übertragen möchten
git push origin HEAD:remote_PR_Branch_name
quelle
Angenommen, Ihre Herkunfts- und Upstream-Informationen sind wie folgt
und Ihr Filialname ist wie
dann
soll den Job machen
quelle
Wenn sich ihre Commits in der Hauptniederlassung ihres gegabelten Repos befinden, können Sie einfach Folgendes tun.
quelle