Я использую Подвижный, и я попал в ужасную беду локально с тремя головами. Я не могу продвинуть, и я просто хочу удалить все свои локальные изменения и фиксации и запуститься снова с полностью чистого кода и чистой истории.
Другими словами, я хочу закончить с (a) точно тем же кодом локально, как существует в подсказке удаленного ответвления и (b) никакой историей любых локальных фиксаций.
Я знаю hg update -C
перезаписи любые локальные изменения. Но как я удаляю какие-либо локальные фиксации?
Чтобы быть ясным, у меня нет интереса к сохранению ни одной работы, которую я сделал локально. Я просто хочу самый простой способ вернуться назад к полностью чистому локальному контролю.
Когда самый простой способ (новый HG Clone
) не практичен, я использую Стрип HG
:
% hg outgoing -l 1
% hg strip $rev # replace $rev with the revision number from outgoing
Повторите до Autgoing
Отказ Обратите внимание, что HG Strip $ Rev
уничтожает $ REV
и все его потомки.
Обратите внимание, что вам может придеться сначала включить полоса
в ваших настройках Mercurial .
PS: Даже более умный подход - использовать ресцентный язык и сделать:
% hg strip 'roots(outgoing())'
ОК. Так что просто удалите все местные вещи, HG INIT
Новый локальный репозиторий и HG Plat
У вас есть последний совет. Не забудьте HG Update
после этого.
Просто удалите все, что у вас есть в локальной системе и повторно клонировать удаленный репо.
Вы захотите сделать локальный клон, где вы сохраняете только изменения, которые также присутствуют в удаленном репозитории. Использование TortoiseHG , Журнал HG
или аналогично выясшению, какая из ваших ревизий в том, что в последнее время редакция не сделана . Использование HG Outgoing
может помочь здесь - он будет перечислять все изменения, которые вы сделали - выберите номер редакции раньше, чем любой из них.
Если целевой пересмотр называется Хорошо
, и ваш клон называется foo
, то сделайте:
hg clone -r good foo foo-clean
Это будет быстрое, локальная операция - есть Нет причин загружать все еще раз . CLONE Foo-Clean
клон будет содержать изменения только к ревизии хорошо
. Теперь вы можете заменить Foo-Clean / .HG / HGGRC
с FOO / .HG / HGGRC
, чтобы сохранить настройки локальных файлов репозитория, такие как Push / push / pull.
Когда вы удовлетворены тем, что Foo Clean
есть все необходимое из foo
, то просто удалите foo
и переименовать Foo Clean
к Foo
. Сделайте HG Trav
, чтобы получить какие-либо новые изменения из удаленного репозитория в свой клон и продолжайте понравиться как обычно.
Если никто не подтолкнул новые изменения в удаленный репозиторий, то очень просто определить, какая редакция вы хотите использовать как хорошо
выше: HG ID по умолчанию
скажет вам ID наконечника в удаленном репозитории.