2016-02-25 19 views
8

Ho due rami che tengo sopra a monte/master. Un ramo ha l'altro come antenato in modo da formare una linea.Il modo più semplice per rebase di più rami in un unico lignaggio

U1 (upstream/master) 
    \ 
    A -- B (fixes) 
     \ 
      C -- D (features) 

Più tardi, a monte/master si muove in avanti ...

U1 -- U2 (upstream/master) 
    \ 
    A -- B (fixes) 
     \ 
      C -- D (features) 

... e voglio rebase entrambi i rami sulla parte superiore.

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' (fixes) 
       \ 
        C' -- D' (features) 

Conosco due modi per farlo, ciascuno con gli svantaggi.

git rebase upstream/master fixes 
git rebase fixes features 

Questi due comandi talvolta funzionano e talvolta mi danno conflitti di unione sul secondo comando.

git rebase upstream/master features 
# figure out the hash code of the new commit corresponding with B' 
git branch -f fixes <sha of B'> 

Questo comporta solo un singolo rebase, ma lo spostamento dei rami è noioso e soggetto a errori.

Ho cercato in rebase --preserve-merges, ma ciò non sembra applicabile perché non ci sono commit di unione.

Esiste un modo migliore per eseguire il rebase?

+3

Potrebbe farmi un favore e utilizzare diagrammi come questo: 'A - B - C'? Ciò non solo renderebbe più semplice la tua domanda, ma lo renderebbe anche più utile per gli altri in futuro. –

+1

Modificato. È più chiaro? –

+0

Ottimo lavoro, ho svalutato. –

risposta

2

Un modo per evitare i conflitti di unione consiste nel spostare i rami dalla cronologia pre-rebase in uno successivo al rebase. Questo è certamente terribile perché richiede di capire la nuova versione di ogni commit, ma potrebbe essere più veloce della fusione inutilmente.

es.

git rebase upstream/caratteristiche maestri

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' 
       \ 
        C' -- D' (features) 

filiali git -f correzioni (SHA per B ') # Cambio in cui il ramo sta indicando.

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' (fixes) 
       \ 
        C' -- D' (features) 
Problemi correlati