2016-02-25 36 views
8

Mam dwie gałęzie, które utrzymuję na górze strumienia/wzorca. Jedna gałąź ma drugą jako przodka, więc tworzą linię.Najprostszy sposób na ponowne utworzenie wielu gałęzi w jednej linii

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

Później upstream/master porusza się do przodu ...

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

... i chcę zmieniają bazę obie gałęzie na wierzchu.

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

Znam dwa sposoby na to, każdy z wadami.

git rebase upstream/master fixes 
git rebase fixes features 

Czasami te polecenia działają i czasami powodują konflikty seryjne przy drugim poleceniu.

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

Dotyczy to tylko pojedynczego rebase, ale przenoszenie oddziałów jest uciążliwe i podatne na błędy.

Zajrzałem do rebase - remount-merges, ale to nie wydaje się mieć zastosowania, ponieważ nie ma zgody commge.

Czy istnieje lepszy sposób na wykonanie rebelii?

+3

Czy możesz wyświadczyć mi przysługę i użyć schematów takich jak: 'A - B - C'? Ułatwiłoby to nie tylko pytanie, ale także uczyniłoby go bardziej użytecznym dla innych w przyszłości. –

+1

Edytowane. Czy to jest bardziej jasne? –

+0

Bardzo dobra robota, przegłosowałem. –

Odpowiedz

2

Jednym ze sposobów uniknięcia konfliktów scalania jest przeniesienie gałęzi z historii przed ponownym podziałem na pocztę opartą na reszcie. Jest to wprawdzie straszne, ponieważ wymaga wymyślenia nowej wersji każdego zatwierdzenia, ale może być szybsze niż scalanie niepotrzebne.

np.

git rebase upstream/funkcje mistrzowskie

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

git branch -f poprawki (SHA do B ') # Zmień gdzie gałąź jest skierowany.

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