Для будущих читателей: с расширением 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 ').