Создавая новую ветвь в mercurial: "abort: push создает новую удаленную головку"
Я пытаюсь сделать что-то очень просто: создайте новую ветку. Но я испортил. Где я совершил ошибку и как ее исправить?
Я единственный пользователь Mercurial. У меня была ревизия 54, и она была перенесена в удаленный репозиторий. Я хотел создать ветвь на основе версии 53, поэтому я обновил свою локальную копию до версии 53, внеся изменения и зафиксировал (игнорируя предупреждение о "это не голова" ). Затем, когда я пытаюсь нажать на удаленный репозиторий, он говорит
abort: push creates new remote head
Возможно, мне нужно было сказать Mercurial, что я хочу создать новую ветку? Если да, то как и в какой момент?
Спасибо!
Ответы
Ответ 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, а затем щелкнул правой кнопкой ветку, которую я не хотел, измененная история - полоса. Если вы нажали, тогда его нужно удалить из всех других репозиториев, включая тех, кто потянул вашу нежелательную ветвь.
Альтернативой является объединение нежелательной ветки в вашу основную ветвь, но не принимать какие-либо изменения из этой ветки - я не уверен, как работает этот механизм.