Подтвердить что ты не робот

Создавая новую ветвь в mercurial: "abort: push создает новую удаленную головку"

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

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

abort: push creates new remote head

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

Спасибо!

4b9b3361

Ответ 1

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

$ hg push --force

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

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

$ hg push --new-branch

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

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

Ответ 2

Другая причина этой ошибки: возможно, некоторые изменения UNMERGED формируют центральное репо в вашей ветке по умолчанию.

hg up default
hg merge
hg ci -m "Merge"
hg pus

Ответ 3

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

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

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