Відповіді:
Оновіться до 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): Тепер, коли фази є стандартними у рутинах, rebase
відмовляться змінювати набори змін, які вже були натиснуті. Або обдуріть це, змінивши фазу назад на чернетку (з hg phases
), або нехай стара гілка залишиться там, де вона є, і просто зробіть належну назву копії (наприклад, з `hg rebase --keep ').
hg convert
замість цього.
--keep
до команди rebase, яка буде копіювати замість переміщення змін.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Зауважте, що я наніс набори змін з іншої гілки на цю. Крім того, він розщеплюється і зливається безкоштовно.
.
для свого --dest
значення, а ребаза автоматично прийме нову назву гілки.
Якщо у вас є набори змін, вам доведеться використовувати розширення для перетворення за допомогою гілки для перейменування. Кожен повинен буде клонувати нове репо або позбавити стару гілку.
Це змінює історію і призначене лише для досвідчених користувачів 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}