2016-03-04 22 views
13

Sto lavorando a un progetto e ho inviato la mia prima richiesta di pull e mentre sto aspettando voglio continuare a lavorare sul mio progetto accumulato da quello che ho lavorato alla fusione che è ancora in sospeso sopra. In questo momento ho:Lavoro in attesa di PR PR

*master 
user_story_1 

user_story_1 ha una richiesta di apertura aperta.

Ora sto provando a creare un nuovo ramo user_story_2 dove posso continuare il lavoro che ho lasciato di user_story_1. Come posso farlo in Git senza entrare in conflitto o influenzare la mia fusione in sospeso?

risposta

27

Suppongo che vogliate iniziare il nuovo ramo user_story_2 in aggiunta al lavoro svolto in user_story_1. Ecco il flusso di lavoro che uso in questo tipo di scenario:

  1. Aperto Pull Request for user_story_1:

    * (user_story_1) 
        * 
    /
    * (master) 
    * 
    * 
    
  2. Crea nuova filiale user_story_2 sulla base di user_story_1:

    $ git checkout -b user_story_2 user_story_1
    * (user_story_1, user_story_2) 
        * 
    /
    * (master) 
    * 
    * 
    
  3. Lavori sulla nuova filiale:

    * (user_story_2) 
        *  
        * (user_story_1) 
        * 
    /
    * (master) 
    * 
    * 
    
  4. Pull Request viene fusa:

    * (user_story_2) 
        *  
    * | (master) 
    |\| 
    | * (user_story_1) 
    | * 
    |/ 
    * 
    * 
    * 
    
  5. Elimina vecchio ramo:

    * (user_story_2) 
        *  
    * | (master) 
    |\| 
    | * 
    | * 
    |/ 
    * 
    * 
    * 
    
  6. REBASE nuovo ramo sul master:

    * (user_story_2) 
        *  
    /
    * (master) 
    |\ 
    | * 
    | * 
    |/ 
    * 
    * 
    * 
    
+1

Cosa succede se il primo ramo viene rifiutato? – Narayon

+2

Solitamente rebase 'user_story_2' su' master': 'git rebase --onto master user_story_1 user_story_2' - potrebbe causare conflitti se i due rami non sono completamente indipendenti. – alextercete

4

Crea un nuovo ramo dal master per ciascuna delle tue storie/caratteristiche.

Prima di unire ciascun ramo, unire il master in quel ramo o rebase il ramo sul master. Quest'ultimo ha la mia preferenza, ma alla fine il risultato è lo stesso.

Stai per ottenere conflitti, non c'è modo di aggirare questo. Tuttavia, vuoi risolvere i conflitti nel tuo ramo; non nel master. In questo modo, puoi testare il tuo ramo dopo aver risolto i conflitti prima dello unendolo in master.