Ответы:
Обновите stigingветку и создайте из нее новую ветку. Затем закройте старую ветку.
В итоге:
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. Например: hg branch --force v3. Это приведет к hg update v3обновлению на новую v3ветку, как вы хотели.
stigingперед ветвлением, вы не получите «свободный конец»
Для будущих читателей: с rebaseрасширением вы можете создать новую ветку с тем же родительским элементом stigingи переместить в нее всю историю веток, например:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Это предполагает, что stigingимеет только одного родителя. Конечно, вы можете просто использовать явные номера ревизий.
Примечание 1: Если ветвь stigingвключает слияния с другими ветвями, я думаю, что это сохранит их до тех пор, пока у них будет один stagingи stigingтот же родительский элемент. Но я бы точно перепроверил.
Примечание 2: Так как это редактирует историю, старая ветвь не просто исчезнет из клонированных репозиториев (см. rebaseДокументацию). Если каждый не может клонировать заново, это может быть не очень практичным решением для большой группы.
Примечание 3 / Правка (любезно предоставлено @JasonRCoombs): теперь, когда фазы являются стандартными в Mercurial, rebaseон откажется изменять изменения, которые уже были переданы. Либо дурачите его, изменяя фазу обратно на черновик (с помощью hg phases), либо оставьте старую ветвь на месте, и просто сделайте копию с правильным именем (например, с помощью `hg rebase --keep ').
hg convertвместо этого.
--keepкоманду rebase, которая скопирует, а не переместит изменения.
abort: can't rebase immutable changeset 11b1e2b7dc4f. Обратите внимание, что я привил наборы изменений из другой ветви в эту. Кроме того, он разделен и объединен бесплатно.
.в качестве --destзначения, и ребаз автоматически получит имя новой ветки.
Если у вас есть наборы изменений, то вам придется использовать расширение convert с картой ветвления, чтобы переименовать его. Тогда каждому придется клонировать новый репо или убрать старую ветку.
Это изменяет историю и предназначено только для опытных пользователей Mercurial. Не делай этого, если не знаешь, что это значит.
Если стимуляция только локальная, вы можете изменить ее на постановку с помощью комбинации трансплантата и полоски . Начните с обновления до набора изменений предка, где отклонения отстоят. Создайте промежуточную ветвь и пересаживайте каждый коммит, начиная от заклинания до постановки Постановка теперь должна быть копией стигинга. И наконец, уничтожьте удар, сняв первый коммит.
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}