Odpowiedzi:
Zaktualizuj stiging
gałąź i utwórz z niej nową gałąź. Następnie zamknij stary oddział.
W podsumowaniu:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
. Na przykład: hg branch --force v3
. Spowoduje to hg update v3
aktualizację do nowej v3
gałęzi, tak jak chcesz.
stiging
przed rozgałęzieniem, nie dostaniesz „luźnego końca”
Dla przyszłych czytelników: Dzięki temu rebase
rozszerzeniu możesz utworzyć nowy oddział z tym samym rodzicem co stiging
i przenieść do niego całą historię oddziału, jak poniżej:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Zakłada się, że stiging
ma tylko jednego rodzica. Oczywiście zamiast tego możesz użyć wyraźnych numerów wersji.
Uwaga 1: Jeżeli oddział stiging
obejmuje łączy się z innymi oddziałami, ja myślę , że to będzie ich utrzymanie, jak długo staging
i stiging
mają tego samego rodzica. Ale na pewno sprawdzę jeszcze raz.
Uwaga 2: Ponieważ to edytuje historię, stara gałąź nie zniknie ze sklonowanych repozytoriów (patrz rebase
dokumentacja). Jeśli wszyscy nie będą mogli klonować od nowa, może to nie być bardzo praktyczne rozwiązanie dla dużej grupy.
Note3 / Edit (dzięki uprzejmości @JasonRCoombs): Teraz, gdy fazy są standardowe w mercurial, rebase
odmówi modyfikacji zestawów zmian, które zostały już wprowadzone. Oszukaj go, zmieniając fazę z powrotem na wersję roboczą (za pomocą hg phases
) lub pozwól, aby stara gałąź pozostała tam, gdzie jest, i po prostu zrób odpowiednio nazwaną kopię (np. Z `hg rebase --keep ').
hg convert
zamiast tego.
--keep
do polecenia rebase, które skopiuje zamiast przenieść zmiany.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Zauważ, że przeszczepiłem zestawy zmian z innej gałęzi do tej. Poza tym jest podzielony i nie łączy się.
.
dla swojej --dest
wartości, a baza automatycznie przyjmie nazwę nowej gałęzi.
Jeśli masz na nim zestawy zmian, będziesz musiał użyć rozszerzenia konwersji z mapą gałęzi, aby zmienić jego nazwę. Następnie wszyscy będą musieli sklonować nowe repozytorium lub usunąć starą gałąź.
To modyfikuje historię i jest przeznaczone tylko dla zaawansowanych użytkowników Mercurial. Nie rób tego, jeśli nie wiesz, co to znaczy.
Jeśli szycie jest lokalne, możesz zmienić je na inscenizację za pomocą kombinacji przeszczepu i paska . Zacznij od aktualizacji do zestawu zmian przodka, w którym rozchodziło się szarpanie. Stwórz gałąź przemieszczania i przeszczep każdą zatwierdzenie od napadu do inscenizacji. Inscenizacja powinna być teraz kopią znamienia. Na koniec zniszcz stygnięcie, usuwając pierwsze zatwierdzenie.
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}