Нажатие на удаленный репозиторий после слияния "создает новые удаленные головки" - это плохо?
-
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]
Я обнаружил, что мне нужно явно объединить некоторые изменения, которые выглядели как главы.