Теперь у нас есть ветвь «заострения», где «постановка», кажется, намного лучше семантической подгонки. Какова хорошая стратегия для решения этой проблемы?
205
Обновите 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
и переместить в нее всю историю веток, например:Это предполагает, что
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 graft {first changeset in stiging}..{stiging head}