it-swarm.com.de

Wie kann ich eine GitHub-Pull-Anfrage auschecken?

Ich möchte eine zuvor erstellte Pull-Anfrage (über die GitHub-Weboberfläche erstellt) auschecken. Ich suchte und fand verschiedene Stellen, an denen ein Refs/Pull oder ein 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? Soll GitHub das Pull/Xyz-Zeug automatisch erstellen, oder muss ich etwas konfigurieren?

147
GarfieldKlon

Um ein Remote-PR in Ihr lokales Repo zu holen,

 git fetch Origin pull/ID/head: BRANCHNAME 

dabei ist ID die Pull-Anforderungs-ID und Zweigname der Name des neuen Zweigs, den Sie erstellen möchten. Wenn Sie den Zweig erstellt haben, dann einfach

 git checkout BRANCHNAME 
215
timbo

Dies wird abgerufen, ohne dass Sie einen Zweig benennen müssen:

git pull Origin pull/939/head

Wie erhalte ich eine bestimmte Pull-Anfrage auf meiner Maschine?

89
Steven Penny

That Gist beschreibt, was passiert ist, wenn du einen Git-Abruf machst:

Ändern Sie die Github-URL natürlich so, dass sie der URL Ihres Projekts entspricht. Es sieht so aus:

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/Origin/pr/*

Holen Sie jetzt alle Pull-Requests ab:

$ git fetch Origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> Origin/pr/1000
 * [new ref]         refs/pull/1002/head -> Origin/pr/1002
 * [new ref]         refs/pull/1004/head -> Origin/pr/1004
 * [new ref]         refs/pull/1009/head -> Origin/pr/1009
...

So überprüfen Sie eine bestimmte Pull-Anfrage:

$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from Origin.
Switched to a new branch 'pr/999'

In issues 259 finden Sie verschiedene Skripts, um diese Aufgabe zu automatisieren.
Das Projekt git-extras schlägt den Befehl git-pr vor (implementiert in PR 262 ).

git-pr (1) - Überprüft eine Pull-Anforderung lokal

ZUSAMMENFASSUNG

git-pr <number> [<remote>]
git-pr clean

BESCHREIBUNG

Erzeugt einen lokalen Zweig basierend auf einer GitHub-Pull-Request-Nummer und wechselt danach zu diesem Zweig.

Der Name der Fernbedienung, von der abgeholt werden soll. Standardeinstellung ist Origin.

BEISPIELE

Dadurch wird die Pull-Anforderung 226 von Origin ausgecheckt:

$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
  * [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'
40
VonC

Ich ziehe es vor, abzuholen, ohne einen lokalen Zweig zu erstellen und sich im HEAD freistehendem Zustand zu befinden. Dadurch kann ich die Pull-Anforderung schnell überprüfen, ohne meinen lokalen Rechner mit unnötigen lokalen Zweigstellen zu belasten.

git fetch upstream pull/ID/head && git checkout FETCH_HEAD

dabei ist ID eine Pull-Request-ID und upstream, wobei der ursprüngliche Pull-Request erstellt wurde (dies könnte beispielsweise Origin sein).

Ich hoffe, es hilft.

19
Andrew Ymaz

In Bezug auf die Antwort von Steven Penny ist es am besten, einen Testzweig zu erstellen und die PR zu testen. Also hier ist was du tun würdest. 

  1. Erstellen Sie einen Testzweig, um die PR lokal zu verbinden. Angenommen, Sie befinden sich im Master-Zweig:

git checkout -b test

  1. Holen Sie sich die PR-Änderungen in den Testzweig

git pull Origin pull/939/head:test

Jetzt können Sie die Änderungen auf diesem lokalen Testzweig (in diesem Fall mit dem Namen test ) sicher testen. Sobald Sie zufrieden sind, können Sie sie wie gewohnt aus GitHub zusammenführen.

10
bholagabbar

Wenn Sie Github.com verwenden, gehen Sie zu "Pull-Anforderungen", klicken Sie auf die entsprechende Pull-Anforderung und klicken Sie dann auf den Link "Befehlszeilenanweisungen":  command line instructions at Github.com

8
AmitB

Mit dem Befehl git config können Sie eine neue Regel in .git/config schreiben, um Pull-Anforderungen aus dem Repository abzurufen:

$ git config --local --add remote.Origin.fetch '+refs/pull/*/head:refs/remotes/Origin/pr/*'

Und dann einfach:

$ git fetch Origin
Fetching Origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
 * [new ref]         refs/pull/2/head -> Origin/pr/2
 * [new ref]         refs/pull/3/head -> Origin/pr/3
5
SummerBreeze
  1. Öffnen Sie die PR auf Github. Oben auf der PR-Seite befindet sich eine Nummer, die sie angibt - 123 und den Namen des Zweiges des Autors - branch-name. Schreibe beide auf.
  2. Öffnen Sie git bash und stellen Sie sicher, dass Ihr Arbeitsverzeichnis sauber ist, indem Sie git status ausführen.
  3. holen Sie sich eine Kopie des PR, indem Sie git fetch upstream pull/<id>/head:<branch> eingeben. In diesem Beispiel würden Sie git fetch upstream pull/123/head:branch-name eingeben.
  4. Nun, da Sie eine Kopie des Zweigs haben, wechseln Sie mit git checkout branch-name dorthin. Ihr Verzeichnis wird jetzt eine genaue Kopie der PR sein. Teilen Sie dem Autor unbedingt alle Fehler oder Vorschläge mit, da Sie Ihre eigenen Änderungen nicht direkt zu einer Pull-Anforderung hinzufügen können.
  5. Wenn Sie mit dem Auschecken der Arbeit fertig sind, kehren Sie mit git checkout master zu Ihrer lokalen Version von Project Porcupine zurück

Die vollständige Anleitung finden Sie hier - https://github.com/TeamPorcupine/ProjectPorcupine/wiki/How-to-Test-a-Pull-Request#testing-someone-elses-pull-request

5
yoAlex5

Ich habe aus Versehen fast das gleiche geschrieben wie von git-extras. Wenn Sie also einen einzelnen benutzerdefinierten Befehl vorziehen, anstatt ein paar andere zusätzliche Befehle zu installieren, platzieren Sie einfach diese git-pr-Datei irgendwo in Ihrem $PATH.

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1
4
Johannes Ewald

Für Bitbucket müssen Sie das Wort pull durch pull-requests ersetzen.

Zunächst können Sie den Stil der Pull-Anforderungs-URL mit dem Befehl git ls-remote Origin bestätigen. 

$ git ls-remote Origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

Wie Sie sehen können, ist es refs/pull-requests/1503/from anstelle von refs/pull/1503/from

Dann können Sie die Befehle aller Antworten verwenden. 

4
osexp2003

Das Problem mit einigen der oben genannten Optionen ist, dass, wenn jemand nach dem Öffnen der PR mehr Commits an die PR drängt, diese nicht die aktuellste Version erhalten .. Für mich ist das, was am besten funktioniert hat, die PR und Drücken Sie 'Commits' und blättern Sie zu bottom, um den letzten Commit-Hash anzuzeigen  enter image description here und dann einfach git checkout verwenden, d. h.

git checkout <commit number>

im obigen Beispiel

git checkout 0ba1a50

3
Ariel Gabizon

Wenn Sie dem Workflow "github fork" folgen, in dem Sie eine Verzweigung erstellen und das Remote-Upstream-Repo hinzufügen:

14:47 $ git remote -v
Origin  [email protected]:<yourname>/<repo_name>.git (fetch)
Origin  [email protected]:<yourname>/<repo_name>.git (Push)
upstream        [email protected]:<repo_owrer>/<repo_name>.git (fetch)
upstream        [email protected]:<repo_owner>/<repo_name>.git (Push)

um in Ihren aktuellen Zweig zu gelangen, würde Ihr Befehl folgendermaßen aussehen:

git pull upstream pull/<pull_request_number>/head

um in einen neuen Zweig zu ziehen, würde der Code folgendermaßen aussehen:

git fetch upstream pull/<pull_request_number>/head:newbranch
3
init0

Ich verwende hub, ein Tool von github: https://github.com/github/hub

Mit dem Hub-Check-Out ist eine Pull-Anfrage vor Ort ein Kinderspiel:

hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
0
Daniel Wehner