Połączyłem gałąź rozwoju z gałęzią master i od tego czasu wprowadziłem wiele zmian. Jak można ponownie podzielić gałąź programistów od głównej i zachować zmiany.
master -------merged -------changes -- mstr & dev ------need to split ----master
dev------------^ ------------- dev
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli będziesz kontynuować rozwój na swoim dev
oddział i dalej master
, musisz po prostu dokonać zmiany bazy dev
na górze master
:
Po pierwsze, połączyłeś się dev
do master
:
x--x--x--x---X (master)
/
y--y--y--y (dev)
Potem dokonujesz ewolucji dev
i master
:
x--x--x--x---X--x--x (master)
/
y--y--y--y1--z--z (dev)
Jak można ponownie podzielić gałąź programistów od głównej i zachować zmiany.
git checkout dev
git rebase --onto master y1 dev
Możesz spróbować git rebase -p
, dla zachowania zatwierdzenia scalania, ale w twoim przypadku po prostu zmieniamy część, która Cię interesuje, „z
„popełnia, jest prostsze.
x--x--x--x---X--x--x (master)
/
y--y--y--y z"--z" (dev rebased)
0 dla odpowiedzi nr 2
Z opisu chcesz (w przenośni)przenieś gałąź „master” z powrotem do punktu tuż przed scaleniem, a chcesz, aby bieżące prace programistyczne były w gałęzi „development”.
Jeśli dobrze rozumiem twoje pragnienie, jest to w zasadzie zamiana dwóch wskaźników gałęzi, z drobnymi poprawkami, aby upewnić się, że nie wskazujesz samego zatwierdzenia scalenia.
Na master, użyj git branch --move master new_develop
zmienić nazwę master na nową nazwę.
Następnie zakładając, że twoja stara gałąź programistyczna wskazuje ten stary zatwierdzenie scalania (sprawdź to gitk development
), posługiwać się git branch master development^2
aby odtworzyć wzorzec, ale na drugim rodzicu scalania programowania (zwróć uwagę na kolejność zamienionych argumentów).
Wreszcie, git branch --move new_develop development
przywrócić starą nazwę oddziału. Sprawdź to za pomocą gitk
lub twoje ulubione narzędzie.