Удалите весь локальный changesets и вернитесь к дереву

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

Другими словами, я хочу закончить с (a) точно тем же кодом локально, как существует в подсказке удаленного ответвления и (b) никакой историей любых локальных фиксаций.

Я знаю hg update -C перезаписи любые локальные изменения. Но как я удаляю какие-либо локальные фиксации?

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

95
задан Jeroen 3 February 2015 в 13:30
поделиться

4 ответа

Когда самый простой способ (новый 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())'
129
ответ дан 24 November 2019 в 05:51
поделиться

ОК. Так что просто удалите все местные вещи, HG INIT Новый локальный репозиторий и HG Plat У вас есть последний совет. Не забудьте HG Update после этого.

9
ответ дан 24 November 2019 в 05:51
поделиться

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

2
ответ дан 24 November 2019 в 05:51
поделиться

Вы захотите сделать локальный клон, где вы сохраняете только изменения, которые также присутствуют в удаленном репозитории. Использование 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 наконечника в удаленном репозитории.

21
ответ дан 24 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: