Использовать трансплантат для пересадки содержимого одной ветви в другую? - PullRequest
0 голосов
/ 04 июня 2019

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

В моей ветке по умолчанию я занимаюсь первичной разработкой. Некоторое время назад я создал «бета» ветку (теперь в версии 160), чтобы позволить бета-тестеру работать над стабильной версией, пока начальная разработка продолжалась. (сейчас в версии 200)

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

Я вижу много дискуссий о переносе "коммитов" из одной ветви в другую, но означает ли это то же самое, что и перемещение всего контента, если я использую последний коммит?

Пример командной строки был бы наиболее полезным.

1 Ответ

1 голос
/ 04 июня 2019

Я разместил ссылку-запрос на закрытие для вероятного дубликата ( Mercurial: сделать одну ветвь идентичной другой ), но я подумал, что добавлю следующее ...

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

Можно использовать hg merge для копированияотправка подсказок другой ветки (или любая нешаблонная фиксация) в вашу собственную ветку с помощью встроенного инструмента слияния :other. 2 Это записывает фактическое слияние, в отличие от близкого ответа другого ответа.открыть метод.Нет особой причины отдавать предпочтение одному методу над другим.


1 Не ясно, как их вызывать. Редактировать: В документации Mercurial эти анонимные ветви называются .Вы получаете их, когда используете Mercurial более похожим на Git способом, используя закладки для отслеживания нескольких головок в пределах одной именованной ветви:

                  c4--c5   <-- bookmark1
                 /
default:   c1--c2--c3   <-- bookmark2
                     \
                      c6--c7--c8   <-- bookmark3

В Git эти закладки равны ветви: постоянных веток вообще нет, и все, что вы получаете, это закладки.

(Примечание: не ясно, считает ли Mercurial c3 анонимной веткой. Commit c3 не является заголовком,и не будет отображаться в списке hg heads, даже если у него есть закладка, идентифицирующая его. Анонимная ветвь эффективно появляется позже, если и когда вы обновите закладку, а затем создадите коммит new , перетаскивая закладкучтобы отслеживать его прогресс.)

2 Это эквивалент отсутствующей стратегии слияния Git -s theirs.Сравните с :local, который является эквивалентом стратегии Git -s ours, и сопоставьте его с :merge-local или :merge-other, которые объединяют изменения с обеих сторон , но предпочитают нашу или их сторону для автоматическогоразрешение конфликта слияния.

...