Cosa fare dopo è: continuare a contribuire con nuove funzionalità o correggere altri bug nei loro rami dedicati (inviati solo al tuo fork).
Significa che la tua forcella rimane, ma i rami all'interno della tua forcella possono andare e venire.
Puoi anche rimuovere il fork se non hai intenzione di contribuire ulteriormente, ma rimuoverà la voce corrispondente in "Archivi a cui contribuisci" .
È più facile:
- elimina il tuo
fix
ramo (in realtà, ora è cancellato per te ) sul tuo fork (e nel tuo repository clonato locale: vedi " Eliminare un ramo Git sia in locale che in remoto ")
git pull upstream master
(se master
era il ramo in cui è stata integrata la tua correzione: l'unione sarà di avanzamento veloce): nessun rebase necessario a questo punto.
- ricreare un ramo di correzione sopra il locale aggiornato
master
(ora con l'ultimo di upstream master
).
Tuttavia, non dimenticare mai un passaggio prima di inviare qualsiasi futura richiesta pull:
rebase prima il ramo corrente ( fix
) dal ramo di destinazione upstream
( upstream
essendo il repo originale che hai biforcato: vedi " Qual è la differenza tra origin e upstream in GitHub ")
Prima di inviare qualsiasi cosa al repository originale ("upstream"), devi assicurarti che il tuo lavoro sia basato sull'ultimo di detto repository originale (altrimenti la richiesta pull non si tradurrà in un'unione in avanti veloce una volta applicata di nuovo sul upstream
repo).
Vedere, ad esempio, " Flusso di lavoro per la gestione delle richieste pull su repository condivisi in GitHub ".
In altre parole, upstream
può evolversi (avere nuovi commit su di esso) mentre sei impegnato a sistemare le cose. È necessario riprodurre le correzioni in aggiunta a quest'ultimo lavoro dall'upstream per assicurarsi che i commit siano ancora compatibili con l'ultimo di upstream
.
L' OP Santosh Kumar chiede nei commenti :
Ho tirato e unito da upstream
a master, e adesso?
Se non hai apportato nuove correzioni dalla tua recente richiesta pull, vedi sopra (elimina e ricrea un nuovo ramo fix
sopra quello aggiornato master
).
Se hai fatto più lavoro dopo la tua richiesta pull, non mi unirei da upstream
se voglio fare una nuova richiesta pull: vorrei tirare e rebase :
git pull --rebase upstream master
In questo modo, tutto il mio nuovo lavoro locale viene riprodotto in aggiunta ai upstream
master
commit più recenti (recuperati nel mio repository locale), supponendo che master
sia il ramo di destinazione che integrerà la mia futura richiesta pull.
Quindi posso spingere il mio lavoro locale a ' origin
', che è il mio fork su GitHub di upstream
.
E dal mio fork su GitHub, posso tranquillamente fare una richiesta pull, sapendo che aggiungerà solo nuovi commit a upstream
senza bisogno di alcuna risoluzione di unione: unire quei nuovi commit nel upstream
repo significherà una semplice unione in avanti veloce.
A git pull --rebase
senza specificare il ramo in cima al quale vuoi rebase il tuo fix
ramo (attualmente estratto) non funzionerebbe:
Quello ( git pull --rebase
) dice:
You asked to pull from the remote '`upstream`', but did not specify a branch.
Devo aggiungere finalmente il master? E cosa farà? Eliminerà il mio fix
ramo?
Sì, puoi specificare il ramo che sarà il target della richiesta pull, ad esempio ' master
'.
Ciò non eliminerà il tuo fix
ramo, ma lo riprodurrà sopra l'upstream master
recuperato nel tuo repository.
:)