Я обманул слияние. Я хочу вернуться и попробовать еще раз.
Есть ли способ отменить слияние до его фиксации?
hg revert
не делает то, что я хотел бы, он только возвращает текст файлов. Mercurial прерывает мою вторую попытку слияния и жалуется, что исходное слияние все еще не выполнено.
Есть ли способ отменить слияние после hg merge
команды, но до ее фиксации?
Ответы:
hg update -C <one of the two merge changesets>
источник
--clean
это синоним-C
. Я не уверен, к какому набору изменений.
будет относиться, но это всегда будет один из двух объединенных наборов изменений..
должна выполняться до той ревизии, которую вы использовали до начала слияния. Итак, если бы вы были на r42, попытались слиться с r43, потерпели неудачу, очистили, вы бы вернулись на нетронутый r42.hg update --clean
работает, как.
кажется, неявное значение по умолчанию - хотя это явно не задокументировано ..
в контексте слияния довольно неоднозначно.После того, как вы это сделаете
hg merge
, но раньшеhg commit
, ваша рабочая копия будет иметь двух родителей: первый родитель - это набор изменений, который вы обновили до слияния, а второй родитель - набор изменений, с которым вы выполняете слияние. Mercurial не позволит вам сделать этоhg merge
снова, пока у вашей рабочей копии есть два родителя.У вас есть два варианта действий:
Если вы хотите прервать слияние и вернуться к тому, с чего начали, сделайте
Это обновит рабочую копию, чтобы она соответствовала первому родителю:
.
всегда обозначает первого родителя рабочей копии.Если вы хотите повторно объединить некоторые файлы, выполните
Это повторно запустит инструменты слияния так же, как и вы
hg merge
. Команда resolve хороша, если вы обнаружите во времяhg merge
-time, что ваши инструменты слияния настроены плохо: исправьте конфигурацию и запуститеhg resolve --all
. Вы можете запускатьhg resolve
сколько угодно раз, пока не будете удовлетворены слиянием.источник