2011-11-02 13 views
5

Pensavo di aver fatto una bella parodia, ma sono un po 'ostacolato da questo problema.Github: ottenere un nuovo ramo di sviluppo nella mia forcella

Ecco l'immagine: ho biforcuto "sviluppo" ramo da un progetto nel mio repository github, clonato in locale, creato git-flow, creato e pubblicato. Tutto bene.

Nel frattempo, il progetto originale è stato modificato in un nuovo ramo di sviluppo (chiamarlo "sviluppo2") in modo che la mia funzione pubblicata non potesse essere inserita nel progetto principale.

Quindi, su consiglio: ho creato un ramo 'sviluppo2' locale, eliminato il mio ramo 'sviluppo' locale, tirato 'sviluppo2' dal repository principale del progetto, e quindi unito a questo con la mia funzionalità locale. Tutto bene, TRANNE ... il mio repository github personale ha ancora il vecchio ramo 'sviluppo' e la funzione basata su quel ramo.

Quindi, la mia domanda è cosa devo fare ora? Un paio di opzioni che hanno considerato:

  1. Eliminare il mio 'sviluppare' forchetta in interezza su github, forchetta 'develop2' dal progetto principale, quindi tirare questo al mio repo locale e si fondono, quindi pubblicare di nuovo la mia caratteristica ed emetti una richiesta di pull. (Incertezza tho: avrei bisogno di clonare piuttosto che tirare la nuova forcella in modo che aveva l'origine corretta ..)
  2. Eliminare il 'sviluppare' ramo sull'origine e la funzione, spingere nuova filiale develop2, e così via
  3. forza di spinta mio ramo 'develop2' all'origine di sviluppare, quindi rinominarlo, e fare lo stesso con la funzione ..

Se qualcosa va storto se ho potuto ottenere bloccato con dover rifare un sacco di cose che sarebbe faticoso per non dire altro qualche consiglio dai guru là fuori?

risposta

3

Non hai assolutamente bisogno di rifare roba - Git è ben equipaggiato per affrontare questo tipo di problema.

In primo luogo, le forche su GitHub sono l'intero repository, quindi l'eliminazione della "forcella" di sviluppo "non significa realmente nulla: è sufficiente portare le modifiche a monte develop2 nella forcella. Suggerisco di aggiungere un telecomando chiamato upstream per recuperare facilmente le modifiche dal repository da cui sono stato biforcuto.

Ora supponendo che tu abbia aggiunto upstream, uno git fetch dovrebbe abbassare upstream/develop2 nel tuo repository locale. Annullare l'unione (probabilmente git reset --hard develop~), creare un ramo develop2 da lì per coerenza, quindi rebase le modifiche locali develop2 su upstream/develop2: git rebase --onto upstream/develop2 upstream/develop develop.

Prima:

   X---Y---Z upstream/develop2 
      /
      |   H---I---J develop, develop2 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 

Dopo:

     H'--I'--J' develop2 
        /
       X---Y---Z upstream/develop2 
      /
      |   H---I---J develop 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 
+0

Grazie - Sì questo ha un senso. Ma penso di aver trovato la risposta. ottenere il mio repo Github in linea con il mio locale. Fondamentalmente la mia opzione 2 sopra, ma con un piccolo dettaglio github necessario. La pagina è qui: http://matthew-brett.github.com/pydagogue/gh_delete_master.html In breve: 1. git push origine develop2 (il nuovo ramo dev fino al repository github) 2.Vai a github repo, fai clic su 'Admin', imposta il ramo predefinito per lo sviluppo2 3. Quindi puoi eliminare il vecchio ramo dev ie. origine push git: sviluppare 4. Quindi spingere la funzione come al solito. – user1025174

Problemi correlati