Mercurial Выход из плохого слияния - PullRequest
5 голосов
/ 29 апреля 2011

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

hg clone myrepo newrepo -r A -r 12345

, где 12345 - номер ревизии до неудачного коммита слияния B

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

Есть ли способ клонировать все, кроме ревизии 123456 или чего-то еще?(где 123456 - плохой коммит на B)

Ответы [ 4 ]

10 голосов
/ 29 апреля 2011

Если вы не отправили набор изменений слияния в какое-либо общедоступное местоположение, самое простое решение - использовать команду hg strip, которая поставляется с расширением Mercurial Queues (то есть mq).

Из wiki :

hg strip rev удаляет ревизию rev и всех ее потомков из хранилища.Чтобы удалить нежелательную ветку, вы должны указать первую ревизию, относящуюся к этой ветке.По умолчанию hg strip помещает резервную копию в каталог .hg/strip-backup/.Если полоса оказалась плохой идеей, вы можете восстановить с помощью hg unbundle .hg/strip-backup/filename.

2 голосов
/ 29 апреля 2011

Это может быть не так хорошо, как откат hg, но обычно я делаю обновление до главы A, объединяюсь с предыдущей главой B, проверяю, правильно ли я все сделал на этот раз, а затем dummy-merge прочь плохое слияние.

1 голос
/ 29 апреля 2011

Не слишком ли поздно использовать команду hg rollback ?Если это так, попробуйте команду hg backout .

1 голос
/ 29 апреля 2011

Надеюсь, я правильно понимаю вашу ситуацию.Если я, то вы сможете обновить версию B до слияния, дать этой ревизии новое имя ветви, слить с ней A и продолжить.Возможно, вы захотите пометить исходную ветвь B как закрытую.

$ hg up 12345  #12345 is the revision of B prior to the merge
$ hg branch B-take2
$ hg merge A
$ hg commit -m 'merge A in to B-take2'

$ hg up B
$ hg commit --close-branch -m 'mark original B branch as closed'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...