Mercurial - несколько голов - как мне «отказаться» от одной головы и взять другую в качестве наконечника / по умолчанию? - PullRequest
3 голосов
/ 21 мая 2011

Я раздал чей-то репозиторий elses в Bitbucket и внес некоторые изменения (и перенес их в мое разветвленное репо).Между тем, первоначальный автор внес существенные изменения (в значительной степени переписанные).

Я хочу обновить свое репо, чтобы оно точно соответствовало его (но мои изменения все еще присутствуют в этом теге) таким образом,что он может легко вытащить мои новые изменения без каких-либо предыдущих изменений, которые я сделал, влияющих на что-либо.Я хочу просто взять его в качестве наконечника / по умолчанию.Я попытался решить эту проблему (основываясь на некоторых ответах SO), выполнив:

hg update -r [myrev]
hg commit --close-branch
hg update -r [hisrev]

Это казалось , чтобы привести меня в состояние, которое я хотел.Мой рабочий каталог выглядит как его.Однако, когда я попытался hg push, мне сказали, что это создаст несколько удаленных головок, и я не уверен, что это то, что я хочу (сообщение заставляет его звучать страшно!)

Итак, имейтеЯ сделал это правильно?Должен ли я заставить толчок?Будет ли это делать то, что я хочу (например, сохранить копию своих изменений, чтобы я мог получить к ним, но таким образом, что обычно не мешает?).Если да, то был ли это лучший способ достичь этого?

1 Ответ

5 голосов
/ 21 мая 2011

Головки на закрытой ветви все еще являются головками, поэтому, если вы хотите внести эти изменения, вам понадобится --force.

Другой вариант - объединить эту головку с тем, что вы хотите сделать своей веткой по умолчанию, но не выбирать ни одно из ее изменений. Это можно сделать не в интерактивном режиме, используя:

hg update [hisrev]
hg --config ui.merge=internal:local merge [myrev]
hg commit

У вас будет только одна голова, и в ней будет только его содержание, но ваше по-прежнему доступно в истории.

...