Ridenominazione di un ramo durante la richiesta pull


101

Su GitHub, puoi effettuare richieste pull per aggiungere funzionalità a un progetto. I contributi di uno devono essere su un ramo che, se la richiesta viene accettata, verrà accorpato al ramo master (o analogo) del progetto.

Ora, ho inviato una richiesta pull su Github e i miei contributi sono su un ramo chiamato patch-1. Posso modificare il nome del ramo localmente da

git branch -m patch-1 newname

e in linea di principio posso anche rinominarlo sul mio repo biforcuto su Github seguendo le istruzioni trovate in questa risposta . Ciò viene fatto in pratica rimuovendo il vecchio ramo, patch-1nel mio caso, e ripulendolo con un nome diverso newname.

È consentito rinominare il ramo patch-1sul mio repository forkato su Github quando costituisce una richiesta pull? Oppure causa problemi nella gestione delle richieste pull?

C'è un modo per rinominare un ramo su un repository forkato su Github quando quel ramo è una richiesta pull?

Risposte:


117

"Rinominare" un ramo remoto in git, come indicato dal link che hai fornito, in realtà è solo l'eliminazione di un ramo, seguito dal push di uno nuovo con lo stesso hash di commit ma un nuovo nome. Se hai una richiesta pull aperta per il ramo patch-1, quando elimini quel ramo, la richiesta pull verrà chiusa.

Quindi, no, non puoi rinominare il ramo con una richiesta pull aperta senza eliminare il ramo e rimuovere la richiesta pull. Tuttavia, non c'è nulla che ti impedisca di farlo, spingere un nuovo ramo con un nuovo nome e creare una nuova richiesta pull.


186
uno dei motivi per non farlo è perdere la discussione sulle PR esistenti.
Johnny Everson

6
Non capisco perché una restrizione così rigida sulla ridenominazione del ramo sorgente su PR. Lo stesso fastidioso comportamento esiste in bitbucket. Un altro approccio sarebbe modificare il PR e cambiare il ramo di origine in un altro ramo. Si potrebbe dire "se cambi il ramo sorgente, allora è comunque un nuovo PR". Tecnicamente, sì, ma nulla impedisce allo sviluppatore di impostare a monte da un ramo completamente diverso e quindi eseguire un file git push -f. Il PR viene aggiornato con un codice completamente nuovo ed è ancora lo "stesso" PR.
L. Holanda

31

Risposta breve:

No

Approccio alternativo:

  1. Apri un nuovo PR con un nuovo ramo (rinominato)
  2. Chiudi il vecchio PR facendo riferimento a quello nuovo (es. Chiuso a favore di #new_pr_id)
  3. Modifica la descrizione del nuovo PR (es. Sostituisce #old_pr_id)
  4. (facoltativo) Fare un commento sulla discussione pertinente sul vecchio PR

Nota:

Il nome di un ramo remoto (che costituisce un PR) doveva essere modificato, poiché il sistema di compilazione necessitava del nome del ramo che termina con l'ID del ticket. Tuttavia, il PR è stato aperto prima della creazione del biglietto ufficiale (dalle specifiche) e conteneva discussioni preziose. L'approccio descritto era l'unico modo per far funzionare il sistema di compilazione e anche per non perdere alcuna informazione (sebbene ci fosse un passaggio aggiuntivo nel tracciarlo).


9
Dato che i rami vengono tipicamente cancellati dopo essere stati uniti, penso che sia meglio "tollerare" che il nome sia impreciso per un po 'piuttosto che aggiungere l'overhead di un nuovo PR che fa riferimento al vecchio PR allo scopo di tenere traccia della discussione storica.
Neo
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.