Clone GitHub da richiesta pull?

Vorrei clonare un repository da GitHub. Il problema è che non voglio il ramo principale; Voglio la versione in questa richiesta di pull non approvata .

Posso clonare la versione richiesta di pull invece del repository principale?

Puoi clonare il ramo che vuoi usando l’opzione -b nel comando git clone .

Nel tuo caso, il ramo che vuoi clonare è il ramo sorgente della richiesta pull (feature / supporto mongoose):

 git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone 

Il modo più semplice per farlo è così:

 git fetch origin pull/2/head git checkout -b pullrequest FETCH_HEAD 

Ora sarai su un nuovo ramo che si trova nello stato della richiesta pull.

 git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH 

per esempio:

 $ git fetch origin pull/611/head:pull_611 $ git checkout pull_611 

Apportare modifiche, impegnarle, PUSH e aprire nuove PR dalla tua fork su GitHub

È ansible seguire le istruzioni in questo senso per poter controllare direttamente il telecomando senza dover calcolare il repository e il ramo.

Esempio di utilizzo

Per uno dei miei progetti (github3.py) ho il seguente nel mio github3.py/.git/config

 [remote "github"] fetch = +refs/heads/*:refs/remotes/github/* fetch = +refs/pull/*/head:refs/remotes/github/pr/* url = [email protected]:sigmavirus24/github3.py 

La prima linea è ciò che è standard per ogni telecomando con l’eccezione che github viene sostituito dal nome del telecomando. Ciò significa che le testate remote (o le diramazioni dei rami su quel server) sono “mappate” a telecomandi locali preceduti da github/ . Quindi, se avessi git fetch github e avessi un ramo su GitHub che non era già stato notato localmente sulla mia macchina, scaricherebbe il ramo e potrei passare ad esso in questo modo: git checkout -t github/branch_name .

La seconda riga fa la stessa cosa, ma lo fa per le richieste pull invece dei rami git standard. Ecco perché vedi refs/pull/*/head . Cattura la testa di ogni richiesta pull su GitHub e la mappa su github/pr/# . Quindi, se qualcuno invia una richiesta pull ed è numerata 62 (ad esempio), dovresti fare:

 git fetch github git checkout -t github/pr/62 

E poi saresti su un ramo locale chiamato pr/62 (supponendo che non esistesse già). È bello e significa che non devi tenere traccia dei telecomandi o delle filiali di altre persone.

Quando un utente invia una richiesta di pull, chiede che alcune modifiche vengano unite da un ramo sul proprio clone di un fork verso il repository di un altro utente.

Le modifiche desiderate possono essere ottenute dall’origine della richiesta pull. Per fare ciò, clonare il repository dell’utente ( git://github.com/berstend/frappe.git ), quindi controllare il ramo da cui ha creato la richiesta pull ( feature/mongoose-support ).

Dopo aver installato git-extras

 (cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install) 

Puoi semplicemente usare git pr

 $ git pr 62 [remote] 

Quella richiesta di pull mostra i commit dalla forchetta di quella persona in modo da poter vedere che sta spingendo le sue modifiche dal ramo feature/mongoose-support .

Puoi clonare il suo repository e controllare quel ramo

 git clone git://github.com/dweldon/frappe cd frappe git pull origin pull/2/head 

Come posso recuperare una richiesta pull non richiesta per un ramo che non possiedo?