GitHub: riapertura di una richiesta pull unita


101
  • Ho apportato alcune modifiche
  • Ho inviato una richiesta pull
  • La richiesta pull è stata accettata e unita.
  • Abbiamo trovato un bug
  • Le modifiche sono state rimosse di nuovo mentre correvo il bug.

Ora ho corretto il bug e desidero inviare nuovamente la richiesta pull con 1 commit extra. C'è un modo per riaprire la richiesta pull o aggiornarla, oppure devo creare una nuova richiesta pull, digitare di nuovo la descrizione, ecc.? Gitorious ha questa funzionalità e recentemente siamo passati a GitHub.


Oggi mi trovavo in una situazione simile, ad esempio ho utilizzato il pulsante "Merge Pull Request" che per impostazione predefinita unisce le modifiche nel ramo di destinazione e chiude il PR. In seguito ho scoperto un bug durante il test che volevo risolvere dallo sviluppatore originale. Volevo un modo per riaprire questo PR in modo che più commit possano essere aggiunti a questo stesso PR, ma non è stato possibile perché non esiste un pulsante per riaprire il PR.
SBirthare

Risposte:


114

La risposta sembra essere: non puoi.

Una volta che una richiesta pull viene unita e chiusa, viene bloccata per sempre e non può essere riaperta. Se la tua richiesta pull viene unita, chiusa, quindi le tue modifiche vengono estratte (forzando il push all'indietro prima della fusione), dovrai aggiungere commit al ramo e creare una nuova richiesta pull, copiando tutti i dettagli e probabilmente fornendo un collegamento alla richiesta pull originale per salvare manualmente la cronologia.

Potrebbe essere una bella richiesta di funzionalità per il futuro GitHub.


8
Non so quando è stato modificato, ma ora puoi commentare e riaprire i PR chiusi.
LB

16
@LB, non sembra che tu possa riaprire PR che sono stati chiusi e uniti .
A Kaptur

1
Puoi davvero. Supponendo che tu abbia annullato l'unione iniziale, puoi creare un ramo del repository principale e su questo nuovo ramo semplicemente ripristinare il commit che stava ripristinando l'unione.
SsjCosty

7
@SsjCosty Ma questo non è riaprire un PR chiuso e unito. Puoi sempre aprire nuove richieste pull, che è ciò che richiede la tua soluzione.
Adam Grant il

1
"Potrebbe essere una bella richiesta di funzionalità per il futuro GitHub." In realtà no, non lo sarebbe. Se i PR potessero essere ridefiniti dopo la creazione, le persone che controllano il PR in momenti diversi, potrebbero potenzialmente andare alla deriva. Basta creare un altro PR e "menzionare" il precedente nel testo. Se vuoi fare riferimento a una sorta di pietra miliare, non sono i PR da guardare, sarebbero i tag.
Scott Prive

12

Ho appena riaperto con successo una richiesta pull di

  1. Commentando la richiesta pull
  2. Facendo clic sul pulsante "Invia e riapri" visualizzato nel modulo dei commenti.

1
Non sono riuscito a replicare questo: puoi spiegare i passaggi necessari per vedere questo comportamento? Ho provato a commentare una richiesta pull chiusa (non ha funzionato), commentare una richiesta pull chiusa e spingere al ramo che stava tirando (non ha funzionato). Qualcos'altro da provare? La richiesta pull deve essere fusa e poi disunita in qualche modo?
Michael Parker

Non so quale sia il requisito nascosto che fa la differenza. Potrebbe essere uno qualsiasi di (ho inviato una nuova modifica per la richiesta pull, sono membro dei proprietari del progetto, altro ...)
Tim Lovell-Smith

1
Ora ho provato tutto ciò che hai menzionato, ma ancora non riesco a vederlo. Sono il proprietario del repo. La ricerca di "Invia e riapri GitHub" su Google fornisce un singolo risultato: questa pagina. Ogni ulteriore informazione sarebbe estremamente utile. La tua richiesta pull è stata inizialmente negata?
Michael Parker

52
Posso replicarlo con richieste pull non unite, ma non è di questo che si tratta.
Dan Tello

2
Sì, si riferisce a pull chiusi, non pull uniti.
loujaybee

4

Basta derivare un nuovo ramo dal ramo esistente in cui hai eseguito 1 commit extra. Da lì invia la richiesta pull.


3
Ciò si tradurrebbe in una nuova richiesta di pull con nessuno della cronologia per l'originale.
Dave

1
Questo è quello che ho finito per fare. Sì, la storia è meno lineare ma per me va bene.
possen

4

Puoi utilizzare l'azione di ripristino:

inserisci qui la descrizione dell'immagine

Creerà un'altra richiesta di pull annullando tutte le modifiche apportate nel PR unito.


Questa non è la migliore pratica :)
antonbormotov

2
@antonbormotov puoi suggerirmi un approccio migliore?
William Weckl

Supponiamo di aver unito pr con commit (mA e mB) al ramo stabile che vogliamo ripristinare. Dopo aver unito "revert" pr, la cronologia apparirà come un albero di commit: XY-mA-mB-CD-rA-rB-EF. Perché vuoi vedere tutti questi commit nella cronologia, che applicano le modifiche (mA, mB) e quindi le annullano (rA, rB)? Sarebbe meglio ribasare e rimuovere quei commit "cattivi" mA e mB dal ramo stabile e mantenere pulita la cronologia. Ovviamente ha senso se l'unione fosse relativamente recente.
antonbormotov

1
Non solo la storia apparirà brutta, ma non potrai più semplicemente unire nuovamente i commit ripristinati quando sarai pronto.
Michael

Ho avuto uno scenario in qualche modo simile con una piccola differenza. Avevo un PR che dovevo esaminare e avrei dovuto aspettare che un altro PR venisse unito. Ma non l'ho visto e ho unito prematuramente questo PR. In realtà ho fatto ciò che @WilliamWeckl ha suggerito. Ma ora voglio creare lo stesso PR con le stesse modifiche che sono state create originariamente. Ma quando creo il PR, il ramo principale non mostra alcuna differenza, anche se quando vedo i singoli file sono diversi. qualche idea?
Vikas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.