2013-10-18 13 views
6

Ho biforcato un progetto GitHub, implementato alcune funzionalità e corretto alcuni bug in rami separati, inviando richieste pull per tutti loro.Mantenimento delle filiali Git in attesa che vengano unite in upstream

In attesa che vengano accettati in upstream, voglio utilizzare tutte queste funzionalità e correzioni. Per questo, creo un ramo 'my-master', da 'upstream/master' e unisco tutte le modifiche da altri rami che non sono ancora in upstream. Scrivo anche un elenco di patch applicate nel file README.md.

Quando una delle mie patch va a monte, non c'è motivo di tenere quel ramo più, quindi lo cancello.

funziona, ma, qui c'è un problema con questo approccio:

Di tanto in tanto, ho bisogno di tutti i miei rami rebase non accettate, per tenerli aggiornati. Dopodiché, devo ricreare il ramo "my-master" e aggiornare di nuovo README.md.

C'è un modo per velocizzare o automatizzare questo?

Per favore, non mi consiglia di provare git-up. È utile, ma fa una cosa diversa.

+1

Non sto seguendo perché è necessario rebase di tutti i rami non accettati. Vuoi chiarire? –

+1

Questo è un problema di flusso di lavoro. Perché devi ricreare il tuo ramo "my-master"? Stai mantenendo i tuoi rami aggiornati rispetto al telecomando prima di fare un collegamento locale con le filiali? – Jake

risposta

1

Una tecnica consiste nel rebase del ramo sull'upstream ogni volta che viene rilasciato. Potresti voler creare un tag sul vecchio suggerimento di ramo o un nome di ramo con versione datata in modo da non perdere la tua vecchia cronologia dopo la garbage collection.

Oppure si consiglia di utilizzare lo script di rebase di unione che msysgit utilizza https://github.com/msysgit/msysgit/blob/master/share/msysGit/merging-rebase.sh, che crea l'impressione di una linea continua di sviluppo (tramite il secondo genitore) che è equivalente ai precedenti processi di rebasing.

In entrambi i casi si conserva un insieme di commit di cui si è soddisfatti se le correzioni di rebase (dai conflitti) si rivelassero problematiche.

Questo copre due problemi:

  1. monte è lento per aggiornare (rispetto alla velocità che si desidera/bisogno)
  2. monte si rivolge ad una 'piattaforma' diverso e avrete sempre bisogno di correzioni ' in cima 'per la tua piattaforma/scopo.
Problemi correlati