Как прервать слияние в Mercurial? - PullRequest
78 голосов
/ 20 октября 2010

Я провалил слияние.Я хотел бы вернуться, а затем повторить попытку.
Есть ли способ отменить слияние до того, как оно будет совершено?

hg revert не делает то, что мне нужно, оно только возвращает текстфайлов.Mercurial прерывает мою вторую попытку слияния и жалуется, что первоначальное слияние по-прежнему не принято.

Есть ли способ отменить слияние после команды hg merge, но до ее подтверждения?

Ответы [ 2 ]

99 голосов
/ 20 октября 2010

hg update -C <one of the two merge changesets>

38 голосов
/ 25 октября 2010

После того, как вы выполните hg merge, но до hg commit, ваша рабочая копия имеет двух родителей: первый родительский набор - это набор изменений, который вы обновили до слияния, а второй родительский - набор изменений, с которым вы сливаете. Mercurial не позволит вам сделать hg merge снова, если у вашей рабочей копии есть два родителя.

У вас есть два варианта действий:

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

    hg update -C .
    

    Это обновит рабочую копию, чтобы соответствовать первому родительскому элементу: . всегда обозначает первого родителя рабочей копии.

  2. Если вы хотите повторно объединить некоторые файлы, тогда сделайте

    hg resolve fileA fileB
    

    Это перезапустит инструменты слияния так же, как когда вы сделали hg merge. Команда resolve хороша, если в hg merge вы обнаружите, что ваши инструменты слияния настроены плохо: исправьте конфигурацию и запустите hg resolve --all. Вы можете запускать hg resolve столько раз, сколько захотите, пока не будете удовлетворены слиянием.

...