Ответы:
Обновите 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}