Mercurial: как я могу вернуться к конкретной ревизии?
Я работаю на реальном сервере. Я обновился, чтобы опрокинуться, и это вызвало проблемы: мне нужно вернуться к конкретному набору изменений (388), где все было в порядке.
У меня нет никаких изменений на сервере, локальный набор изменений вообще не имеет значения. На самом деле я на самом деле хочу убить любые локальные случайные изменения или слияния, чтобы не путать вещи.
Как я могу вернуться к определенному набору изменений и убить любые локальные изменения? Это как-то связано с:
hg revert
---- UPDATE ---
Чтобы уточнить, что я хотел бы сделать, сначала верните все локально в changeet 388, а затем убедитесь, что мое местное репо находится в таком состоянии, что когда я делаю
hg status
У меня нет вывода. В противном случае у меня неприятное ощущение, что, когда я буду тянуть наконечник, будут конфликты, с которыми приходится сталкиваться - чего я хочу избежать, потому что локальные изменения не имеют ценности.
---- UPDATE ---
Для кого-то еще в этой ситуации то, что в конечном итоге было исправлено для меня, было:
rm -rf <repo_dir>
hg clone http://repository
hg update -r 388
Это убьет все ваши локальные изменения, поэтому будьте осторожны (но это то, что я хотел в этом случае).
Ответы
Ответ 1
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
Существует также замечательное расширение Purge extension. Очень прочный материал, он удаляет все невоспроизводимые файлы из рабочего каталога.
Ответ 2
Просто используйте приведенную ниже команду, чтобы перейти к ревизии.
hg revert -r REV
Это противоречит --all.
Чтобы убить все локальные изменения, все должно работать.
hg revert --all
Не используйте rollback
. Это необратимая процедура, поэтому ее следует использовать с осторожностью.
ИЗМЕНИТЬ
Вы можете обновить параметр --clean. Это отменит любые незафиксированные изменения.
А затем обновите несколько наборов изменений.
Ответ 3
Я не думаю, что это действительно ясно, что вы хотите, но моя интерпретация будет hg update -C -rev 388
, но вы можете быть в равной степени после возврата или, возможно, (маловероятного) даже откат. мой ответ на этот вопрос дает хорошую разницу между обновлением и возвратом
вам действительно нужно выработать то, что вы хотите видеть в рабочей копии, и то, что вы хотите, чтобы состояние истории было похоже на выбор между ними.