Как отказаться от слияния hg?
Я новичок в сотрудничестве с Mercurial. Моя ситуация:
- Другой программист изменил rev 1 файла, чтобы заменить 4-пространственные отступы с отступом 2-х сторон. (I. изменил каждую строку.) Назовите это rev 2, нажав на удаленное репо.
- Я внес существенные изменения rev 1 с различными изменениями кода в моей локальной рабочей области. Назовите это rev 3.
- У меня
hg pull
ed и hg merge
d без четкого представления о том, что происходит.
- Конфликты мириады и не очень существенные.
Итак, мне очень жаль, что я не изменил свое местное репо на 2-х мерные отступы перед слиянием; то слияние будет тривиальным (я полагаю). Но я не могу создать резервную копию. Мне кажется, мне нужно hg update -r 3
, но он говорит abort: outstanding uncommitted merges
.
Как я могу отменить слияние, изменить интервал в моем локальном репо и повторить?
Ответы
Ответ 1
Вы можете отменить незафиксированные изменения с помощью -C (или -clean):
hg update -C -r 3
BEWARE: Все, что не было совершено, исчезнет!
После этого вы, вероятно, должны использовать какой-то инструмент форматирования кода для выполнения всей операции или, по крайней мере, найти и заменить регулярные выражения. Что-то так же просто, как заменить то, что соответствует ^____
(используйте 4 пробела вместо подчеркиваний) с __
(2 пробела), повторяется несколько раз (если только у вас нет безумно вложенного кода).
Ответ 2
BTW: если вы просто вернули слияние, которое вы сделали, а 3 - не номер версии, вы можете сделать это:
hg update -C -r .
Ответ 3
Чтобы отменить незафиксированное слияние, используйте
hg update --clean
который проверит чистую копию исходного родителя слияния, потеряв все изменения.
Ответ 4
Я, по-видимому, просто нуждался в hg update -C -r 3
, который перезаписывает мои локальные файлы с учетом rev (это то, что я думал hg update
, но я был не прав.) Спасибо за мою помощь!