Подтвердить что ты не робот

Как объединить два ветки в Mercurial, когда нечего слить

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

trunk       A -- B -- C
                       \
experiment              D -- E -- F

Мне нравится, как эксперимент пошел и хочет объединить его с багажником и получить

trunk       A -- B -- C -- D -- E -- F

Однако, поскольку в ветке "trunk" ничего не было изменено, слияние говорит о том, что слияния нет, что достаточно справедливо. Мне просто нужно закончить одну ветку под названием "багажник". Как я могу это сделать?

4b9b3361

Ответ 1

Слияние в Mercurial всегда работает следующим образом:

  • Обновите одну из ветвей (см. примечания ниже, почему вы хотите выбрать тот или иной, а не просто выбрать случайную ветвь)
  • Объединить с другой веткой

Например, в вашем случае вы бы сделали:

hg update trunk
hg merge experiment

Выбор правильной ветки для обновления до

Есть несколько вещей, которые следует учитывать при выборе той ветки для обновления и с которой нужно объединиться, и она связана с закладками и именами ветвей.

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

Однако, если вы обновляетесь до ветки эксперимента, объединитесь с trunk, тогда набор изменений слияния будет находиться в ветке эксперимента.

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

Что касается закладок, с более новыми версиями Mercurial, закладки являются неотъемлемой частью, и если вы обновляете закладку, скажите вот так:

hg update moving-target

а затем зафиксируйте, что закладка будет следовать за вашей фиксацией, т.е. он будет двигаться вперед.

В строке этого, если у вас есть закладка с именем moving-target на голове ветки соединительной линии и обновляется до этой закладки, набор изменений слияния при его фиксации переместит эту закладку вперед.

Ответ 2

Как только вы создали ветвь, вы не можете точно достичь единственной ветки по умолчанию (с некоторыми исключениями, см. ниже). Однако вы должны объединить experiment в default и достичь того же.

Если вы начинаете с этого:

enter image description here

и выполните следующее:

hg update trunk
hg merge experiment

вы должны в итоге:

enter image description here

Другие параметры:

Используя rebase или очередь исправлений, вы может фактически переместить набор изменений на ветке experiment обратно на default. В основном это приведет к удалению ветки experiment named и создаст еще несколько изменений default. Однако вы не можете этого сделать, если вы уже поделились наборами изменений с первым изображением выше, с другим пользователем.