Risposte:
A partire dal 15.08.2016 GitHub consente di modificare il ramo di destinazione di una richiesta pull tramite la GUI. Fai clic su Edit
accanto al titolo, quindi seleziona il ramo dal menu a discesa.
È ora possibile modificare il ramo di base di una richiesta pull aperta. Dopo aver creato una richiesta pull, è possibile modificare il ramo di base in modo che le modifiche nella richiesta pull vengano confrontate con un ramo diverso. Modificando il ramo di base della tua richiesta pull originale invece di aprirne uno nuovo con il ramo di base corretto, sarai in grado di mantenere un lavoro e una discussione preziosi.
Il mittente può cambiarlo quando emette la richiesta pull, ma una volta emessa non puoi cambiarla.
D'altra parte, puoi unire manualmente il loro ramo e push, cosa che faccio regolarmente per richieste pull errate.
Potresti trovare la hub
gemma utile per lavorare con i componenti della richiesta pull.
Quella gemma avvolge il processo manuale, che è:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
come menzionato da @GuillermoMansilla nella sua risposta.
Un'alternativa all'uso della gemma dell'hub menzionata da altre risposte è usare la riga di comando per unire le richieste pull localmente , che ti consente di fare:
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
I comandi precedenti funzionano direttamente solo se aggiungi prima la seguente riga al tuo .git/config
file:
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
Ciò che fa è consentire di scaricare TUTTE le richieste pull. Poiché ciò potrebbe non essere desiderato per grandi repository, GitHub ha modificato le istruzioni per presentare la git fetch origin pull/ID/head:BRANCHNAME
sintassi, che evita la modifica del file di configurazione e scarica solo quella singola richiesta pull.
Sebbene non sia possibile modificare la richiesta pull esistente poiché non è tua, puoi facilmente crearne una nuova se il relativo repository di origine esiste ancora, sì, anche se è di qualcun altro.
Vai al repository del mittente, quindi crea una nuova richiesta pull nel suo repository utilizzando gli stessi commit ma assicurati di impostare correttamente il ramo di destinazione corretto.
Quindi torna al tuo repository e accetta la nuova richiesta di pull. Ecco!
Non c'è niente di sbagliato nella soluzione di Daniel Pittman, tuttavia tratterei quelle unioni come "nessun avanzamento veloce", ovvero, cambiando il passaggio numero 3 per:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
Utilizzando --no-ff
, la cronologia sarà più facile da leggere. Dirà chiaramente che i $n
commit vengono da $branch
e ti renderà la vita più facile se hai bisogno di ripristinare qualcosa fatto in quel ramo.
Per rispondere anche alla domanda di eoinoc e dare un ulteriore suggerimento:
Dopo aver fatto l'unione, il tuo git cli ti chiederà di scrivere un messaggio, generalmente apparirà un messaggio generico che dice qualcosa come
Unisci il ramo di monitoraggio remoto "utente / ramo" nel tuo ramo
Assicurati di modificare il messaggio e includere un riferimento al numero di richiesta pull. Ovvero: (supponendo che il numero di richiesta pull sia 123)
Unisci il ramo di monitoraggio remoto "utente / ramo" nel tuo ramo
rifs # 123 risolvendo qualunque cosa ...
Quindi la prossima volta che visiti la tua pagina dei problemi / pull-request di GitHub e controlli quella particolare richiesta pull, vedrai il tuo messaggio con un link per eseguire il commit in cui hai fatto l'unione.
Ecco uno screenshot di ciò che intendo.
Per farlo vai alla home page del tuo repository, fai clic su branch e cambia il branch predefinito da master a qualcos'altro, nel mio caso "dev".
Dopodiché, ogni volta che qualcuno crea una richiesta pull, il merge
pulsante fonderà automaticamente la richiesta in "dev" anziché in master.