2013-10-15 8 views
8

Mam zamiar zmienić nazwę oddziału w moim repozytorium git. Dowiedziałem się, że prostym sposobem na zrobienie tego jest zrobienie nowego oddziału z tej gałęzi i nadanie mu pożądanej nazwy.Co stanie się w gałęzi podrzędnej, jeśli usunę gałąź macierzystą w git

Po tym chcę usunąć stary oddział (rodzic). Ale obawiam się, że stracę dane w moim nowym oddziale, jeśli to zrobię.

Co się dzieje z zatwierdzeniami pierwotnie wprowadzonymi do gałęzi nadrzędnej, jeśli usunę tę gałąź?

Odpowiedz

8

Co się dzieje? nic.

Jeśli utworzysz gałąź, w której znajduje się inna, możesz "usunąć" tę drugą gałąź bez utraty czegokolwiek. Oddział (HEAD) to tylko wskaźnik do zatwierdzenia.
Dopóki te zatwierdzenia są przywoływane przez gałąź HEAD (lub są częścią przodków HEAD gałęzi), nie są tracone.
Nawet jeśli nie są już przywoływane przez żadną gałąź ani znacznik, nadal są one w lokalnym reflog przez (domyślnie) 90 dni.

Ale patrząc na man page for git branch, to wydaje się łatwiejsze:

git branch (-m | -M) [<oldbranch>] <newbranch> 

Z:

-m 
--move 

przenieść/zmienić nazwę oddziału i analogicznego reflog.

-M 

Przenieś/zmień nazwę oddziału, nawet jeśli nowa nazwa oddziału już istnieje.

1

prostu użyć git-formatu patch:

git pochodzenie Format-łata -o {output_folder}

po otrzymaniu wszystkie łatki się, przejdź do kapitana i utworzyć nowy oddział

następnie stosować te łaty, jak tak: git am {output_folder}/{nazwa_poprawki} .patch

Następnie po sprawdzeniu, że nie straci żadnych informacji, można usunąć stary oddział z oddziału git -D} {name_old_branch

+0

Pomiędzy rozgałęzieniami, które nie są potrzebne, wystarczy stworzyć kolejny znacznik gałęzi. Ale właśnie użyłem tej metody, aby zastosować poprawki do przeniesionego repo. Zestawy zmian zostały utworzone w oparciu o stare repozytorium (lokalizacja), ale trzeba je przekazać drugiej, a 'git format-patch' był świetnym sposobem na zachowanie znaczników czasu i zmianę rozkładu między zatwierdzeniami. – starturtle

Powiązane problemy