создание новой ветки в Mercurial: "abort: push создает новую удаленную голову" - PullRequest
28 голосов
/ 31 января 2012

Я пытаюсь сделать что-то очень простое: создать новую ветку.Но я все испортил.Где я допустил ошибку и как ее исправить?

Я единственный пользователь Mercurial.Я выполнил ревизию 54 и отправил ее в удаленный репозиторий.Я хотел создать ветку на основе ревизии 53, поэтому я обновил свою локальную копию до ревизии 53, внес изменения и зафиксировал (игнорируя предупреждение «это не голова»).Затем, когда я пытаюсь перейти в удаленный репозиторий, он говорит:

abort: push creates new remote head

Может быть, мне нужно было сказать Mercurial, что я хочу создать новую ветку?Если да, то как и в какой момент?

Спасибо!

Ответы [ 3 ]

36 голосов
/ 31 января 2012

Вы говорите Mercurial, что он может продолжить с

$ hg push --force

Вам нужно форсировать это, так как несколько (неназванных) голов обычно не поощряются. Проблема с ними в том, что люди, которые клонируют репозиторий, не будут знать, какой из них использовать. Но так как вы единственный пользователь, вы можете просто пойти дальше и нажать.

Альтернативой является использование именованной ветви hg branch), и тогда вы будете использовать

$ hg push --new-branch

, чтобы разрешить создание новой ветки на пульте. Именованные ветви имеют то преимущество, что позволяют легко различать две ветви. У них есть недостаток, что они постоянны. Постоянный означает, что вы не можете удалить имя ветви из наборов изменений в ветви - имя буквально запекается непосредственно в набор изменений.

Закладки предоставляют способ иметь непостоянные имена ветвей, см. hg help bookmarks.

1 голос
/ 10 ноября 2015

Еще одна причина этой ошибки: возможно, в вашей репозитории по умолчанию есть некоторые НЕПРАВИЛЬНЫЕ изменения в центральном репо.

hg up default
hg merge
hg ci -m "Merge"
hg pus
0 голосов
/ 26 ноября 2014

Я сделал это.Используя TortoiseHg ... вот как я это исправил:

В настройках я включил расширение Strip, затем щелкнул правой кнопкой мыши ветку, которую я не хотел, Modified History - strip.Если вы нажали, то его нужно удалить из всех других репозиториев, включая коллег, которые вытянули вашу нежелательную ветвь.

Альтернативой является слияние нежелательной ветки с основной веткой, но не принимайтеизменения из этой ветки - я не уверен, как работает этот механизм.

...