Mam dwie gałęzie (i master). Oddział 2 opiera się na Oddziale 1 na podstawie wzorca. Zgłosiłem Branch 1 do przeglądu, wprowadzono pewne zmiany, przerzuciłem niektóre z tych zmian do historii i połączyłem wynik w master.Rebase tylko część gałęzi
Teraz muszę przetasować gałąź 2 na master, aby przygotować ją do przeglądu/scalenia.
Problem polega na tym, że Oddział 2 wciąż zawiera oryginalne zatwierdzenia oddziału 1, które już nie istnieją, więc git zostaje zdezorientowany. Próbowałem rebase -i, aby opuścić oryginalne zatwierdzenia oddziału 1, ale zatwierdzenia oddziału 2 nie opierają się na master-before-branch-1.
Co muszę zrobić, to wziąć gałąź 2, upuścić kilka zatwierdzeń i ponownie ustawić tylko pozostałe zatwierdzenia na szczycie wzorca w jednej operacji. Ale wiem tylko, jak wykonać te dwie operacje w dwóch różnych krokach.
Jak mogę zmienić część mojej gałęzi na inną gałąź, usuwając wszystkie zatwierdzenia, które nie mają wspólnych przodków, z wyjątkiem tych, które określam (na przykład z HEAD ~ 2)?
Oto aktualny stan:
master new branch 1
- - - - - - - - - - - | - - - - - - - - -
\
\ branch 1
\ _ _ _ _ _ _ _
\
\ branch 2
\ _ _ _ _ _ _ _
Co chcę skończyć z:
master new branch 1
- - - - - - - | - - - - - - - - - -
\
\
\
\ branch 2
- - - - - - - - -
Pomocny byłby wykres ASCII przedstawiający stan repozytorium. Na pierwszy rzut oka powiedziałbym, że szukasz ['git rebase --onto'] (https://git-scm.com/docs/git-rebase). Sprawdź, czy to pomaga: http://stackoverflow.com/questions/28715619/how-can-i-rebase-part-of-a-branch-to-the-master-branch/28715930#28715930 – Jubobs
Lepiej! Zobacz także http://stackoverflow.com/questions/25488138/move-initial-commits-off-master-to-another-branch-in-git/25490288#25490288 – Jubobs
git rebase - prawie dla mnie pracował . Zrobiłem 'git rebase --onto master --root HEAD ~ 1', ale z jakiegoś powodu wybrało trzy commity, które przyniosą ze mną zamiast tylko' HEAD ~ 1' i wyżej. Co więcej, zamiast przekierowywać moją gałąź, jestem teraz w oddzielnym stanie HEAD. – Puppy