Нажатие на удаленный репозиторий после слияния "создает новые удаленные головки" - это плохо?

  • I initialized проект Mercurial в Machine A, committed моих изменениях и uploaded их в удаленный репозиторий.

  • Затем я cloned этот репозиторий на Machine B, committed внесет некоторые дополнительные изменения и uploaded в тот же удаленный репозиторий.

В обоих случаях я загрузил изменения с помощью той же команды:

hg push https://username:[email protected]/user/repository/

Теперь я вернусь на Машину A, и я pull ** из удаленного репозитория и ** merg ** изменил любые изменения между двумя наборами изменений, используя ** KDiff3 GUI с помощью команд:

hg pull
hg merge
hg commit

Однако, когда я пытаюсь вывести последние изменения с Machine A обратно в удаленный репозиторий после этого pull и merge, я получаю это сообщение:

hg push https://username:[email protected]/user/repository/
pushing to https://username:[email protected]/user/repository/
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

Почему это говорит "ты забыл слиться"? - Я завершил слияние.

Неправильно ли принудительно нажать и создать "новые удаленные головки"?

Если да, то как мне избежать этого?

UPDATE:

Я снова побежал "hg merge" и получил этот вывод:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

Итак, я побежал 'hg up --clean', и он сообщил:

6 files updated, 0 files merged, 1 files removed, 0 files unresolved

Теперь, когда я набираю 'hg heads', он говорит:

changeset:   11
tag:         tip
parent:      9
user:        eggdrop
date:        Tue Oct 20 16:27:44 2009 -0400
summary:     Machine A after merge

changeset:   10
parent:      7
user:        chickensoup
date:        Thu Oct 15 03:27:23 2009 -0400
summary:     Machine B changes to be pulled onto Machine A

Ответы

Ответ 1

Вы выполнили hg up --clean. Это означает, что вы сбрасываете слияние, а это значит, что вам все равно нужно объединиться. У вас есть неразрешенный файл при слиянии. Перечитайте сообщение об ошибке:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

Вам нужно разрешить конфликт слияния, а затем завершить слияние с помощью hg resolve. Затем вы успешно объедините две головы.

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

Итак, чтобы исправить, просто запустите hg merge, разрешите один конфликт, затем запустите hg resolve.

Ответ 2

Сначала: просмотрите свои изменения с помощью hg log. В моем случае следующее не помогло:

  • hg pull и hg merge (перед тем, как вы выберете чек против hg)
  • или: hg pull --rebase

Но это помогло.

hg merge [revision]

Я обнаружил, что мне нужно явно объединить некоторые изменения, которые выглядели как главы.