2010-12-06 2 views
20

У меня две головы, назовем их «A» (хорошая голова) и «B» (плохая голова). Я хочу объединить их, взяв все от A и ничего от B. В принципе, мое слияние A и B равно A.mercurial - «merge», оставив один набор изменений

Когда я пытаюсь объединить hg, он начинает спрашивать меня об этом файле, и это неизбежно в беду. Я не хочу этого! Как я могу сказать, чтобы объединить их и закончить с помощью A, желательно без каких-либо промежуточных шагов?

ответ

18

Одна вещь Я наткнулся и начал использовать недавно в некоторых личных репозиториях, просто используя переключатель с закрытой веткой с фиксацией. например

$ hg update B 
$ hg commit --close-branch -m "Abandoning branch" 

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

27

От Mercurial tips в разделе 22. Храните файлы «Мой» или «Их» при слиянии.

Иногда вы хотите объединить две головы, но вы хотите, чтобы выбросить все изменения от одного из руководителей, так называемого фиктивного слияния. Вы можете переопределить слияние с помощью элемента конфигурации ui.merge:

$ hg --config ui.merge=internal:local merge #keep my files 
$ hg --config ui.merge=internal:other merge #keep their files 

Здесь местные средства родителя рабочего каталога, другой руководитель вы хотите объединить с. Это оставит обновления с другой головы.

Слить X в текущей версии, не давая каких-либо изменений от X прийти через, сделайте следующее:

hg --config ui.merge=internal:fail merge X 
hg revert --all --rev . 

Другой подход упоминается в: https://www.mercurial-scm.org/wiki/PruningDeadBranches

$ hg update -C tip # jump to one head 
$ hg merge otherhead # merge in the other head 
$ hg revert -a -r tip # undo all the changes from the merge 
$ hg commit -m "eliminate other head" # create new tip identical to the old 
+0

Хотя первоначальный вопрос может быть не для истинного слияния, это был первый ответ, который я нашел для своей проблемы. И я даже пронесся через страницы Mercurial Merge и Tips and Tricks. Благодаря! – 2011-02-23 21:51:37

+1

Сообщалось мне, что hg все равно добавит новые файлы из «другой» ветки, используя внутренний алгоритм локального слияния. Это похоже на ошибку, но предостерегает. – 2013-02-15 18:28:48

Смежные вопросы