Mercurial: как вернуться к определенной ревизии? - PullRequest
21 голосов
/ 11 августа 2010

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

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

Как мне вернуться к определенному набору изменений и уничтожить все локальные изменения?Это как-то связано с:

hg revert 

---- ОБНОВЛЕНИЕ ---

Чтобы уточнить, что я хотел бы сделать, это сначала вернуть все локально к changeset 388, а затемубедитесь, что мой локальный репо находится в таком состоянии, что когда я делаю

hg status

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

---- ОБНОВЛЕНИЕ --

Для кого-то еще в этой ситуации то, что в итоге исправило это для меня, было:

rm -rf <repo_dir>
hg clone http://repository
hg update -r 388

Это убьет все ваши локальные изменения, поэтому действуйте осторожно (но это то, что я хотел вэто дело).

Ответы [ 3 ]

20 голосов
/ 11 августа 2010

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

hg revert -r REV

Это противоречит --all.

Чтобы убить все локальные изменения, --all должно работать.

hg revert --all

Не использовать rollback.Это необратимая процедура, поэтому ее следует использовать с осторожностью.

РЕДАКТИРОВАТЬ

Вы можете обновить с опцией --clean.Это отменит любое незафиксированное изменение.А затем обновите до некоторой ревизии.

12 голосов
/ 11 августа 2010
server:
- ..
- rev 386
- rev 387
- rev 388
- rev 389

clone to production

-- testing stuff, it doesn't work!
-- panic!
-- rev 390 (in panic)
-- rev 391 (in panic)
-- cool down, thinking, need to go back to 388
-- one way: hg update -C -rev 388 (to keep 390, 391)
-- other way: rm -rf dir (to discard 390, 391)
-- hg clone http://server/hg
-- cd dir
-- hg update 388 
-- testing, now works

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

5 голосов
/ 11 августа 2010

Я не думаю, что действительно ясно, что вы хотите, но моя интерпретация была бы hg update -C -rev 388, но вы могли бы с таким же успехом быть после возврата или, возможно, (маловероятно) даже отката. мой ответ на этот вопрос дает хорошую разницу между обновлением и возвратом

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...