Я нашел решение без необходимости повторного клонирования и слияния изменений. Я предпочитаю этот метод в основном для исторических целей, так как считаю, что это ценная информация о том, что произошло с этой функцией (иначе она началась с малого, а затем была переосмыслена быть больше и т.д ..)
В моем примере, UserA должен обновиться до нежелательного заголовка на default
и закрыть эту ветку по умолчанию, так как это нежелательно. Это оставит 2 головы одну для default
и одну для Feature1
, как и ожидалось.
hg update -r X // X is the rev of the unwanted head.
hg commit --close-branch -m "Moved to Named Branch Feature1, cleaning up initial work"
Затем обновите ветку Feature1
, нажмите и продолжите работу.
Другой рабочий процесс почти такой же, за исключением того, что пользователь A решил нажать Feature1
, чтобы другие помогли, а default
никто не продвинул вперед. Локальное репо имеет только 2 головы, и пользователь может нажимать, но пользователь A НЕ хочет просто нажимать, поскольку наконечник default
теперь будет набором изменений, который действительно «принадлежит» Feature1
.
Пользователь A должен обновиться до последней, нежелательной ревизии defaul
t. Затем верните default
обратно к ревизии, прежде чем UserA начнет работать.
hg update default
hg revert -r Y // Y is the changeset before UserA started working on the feature
hg commit -m "Reverting changes that now exist in Feature1 branch"
Затем обновите ветку Feature1
, нажмите и продолжите работу.