Проблема "push создает новую удаленную головку"

Я прочитал все SO-вопросы об этой проблеме, и я до сих пор не могу ее решить. Я использую TortoiseHg. Я работал над боковой ветвью, и теперь я хочу объединить ее обратно в основную ветку. Я вытащил все изменения, сделанные в обоих ветвях, обновил их до основной ветки и объединил (и зафиксировал). Но все же, когда я пытаюсь нажать все это, я получаю сообщение "abort: push создает новую удаленную головку". Я также попытался (как было предложено в одном из вопросов в SO) закрыть ветвь, используя опцию --close-branch. Единственное, что я не пробовал, это нажать "заставить".

Любые предложения? Или это принудительный толчок единственный вариант?

See screenshot

Ответ 1

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

Вы можете принудительно нажать, это должно быть хорошо, но в конечном итоге вы можете получить такую ​​же проблему, если в своей ветке visualization у вас есть несколько головок, как у вас уже есть с наборами изменений 14 и 20. Чтобы решить проблему один раз и для всех, я хотел бы предложить объединить оба набора изменений (14 и 20) и отложить последнюю главу.

Ответ 2

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

Я объединил последнюю ревизию, которую я потянул за ветку по умолчанию с моей ветвью new, но это оставляет ваши локальные изменения в ветке по умолчанию зафиксировано, но не нажато.

Если вы попытаетесь их протолкнуть, это не ваша новая ветка, которая создает удаленную головку, это недвинутые ревизии ветки по умолчанию, которая создает удаленную головку.

Когда я удалил эту ревизию с помощью hg strip -r 1234

hg push --new-branch 

прошел отлично.

Что поставило меня на правильный путь, было

hg heads

С показанием у меня было две головы, у которых было имя ветки по умолчанию с разными номерами ревизий.

Ответ 3

Спасибо за ответы, я определенно узнал несколько новых трюков.

То, что я закончил, - это клонирование ранней версии из репозитория remote, то есть хранилища, в котором нет всех коммитов моих слияний и т.д. Затем я вытащил изменения, устанавливает, объединяет и совершенствует. Тогда толчок наконец-то преуспел.

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

Ответ 4

Попробуйте это решение,

Успение. У вас достаточно прав на закрытие и создание ветки в удаленном

Это происходит потому, что вы пытаетесь переписать историю. Просто попробуйте hg push -f, который создаст две головки в удаленном репо, что вы не можете

Итак, первый вход на ваш пульт и закройте ветку, теперь переходите к локальному и нажмите hg push -f. Необходимая новая ветка будет создана автоматически с исходным состоянием, как было раньше.