Подвижный — возвращаются назад к старой версии и продолжаются оттуда

Я использую Подвижный локально для проекта (это - единственный repo еще нет никакого продвижения/получения по запросу к/отовсюду).

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

Я немного перепутан с branch / revert / update -C команды в Подвижном. В основном я хочу вернуться к версии 38 (в настоящее время на 45) и иметь мои следующие фиксации, имеют 38 как родитель и продолжаются оттуда. Я не забочусь, потеряны ли изменения 39-45 навсегда или заканчиваются в собственном тупиковом ответвлении.

Которые управляют / набор команд, мне нужно?

248
задан van 13 December 2013 в 00:54
поделиться

2 ответа

hg update [-r REV]

Если позже вы сделаете коммит, вы фактически создадите новую ветку. Тогда вы можете продолжить работу только с этой веткой или со временем объединить с ней существующую.

149
ответ дан 23 November 2019 в 02:59
поделиться

Вот шпаргалка по командам:

  • hg update изменяет родительскую ревизию вашей рабочей копии, а также изменяет содержимое файла, чтобы оно соответствовало этой новой родительской ревизии. Это означает, что новые коммиты будут продолжаться с той версии, до которой вы обновляете.

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

  • hg branch запускает новую именованную ветку. Думайте об именованной ветке как о метке, которую вы назначаете ревизиям. Итак, если вы выполните hg branch red , то следующие ревизии будут отмечены как принадлежащие «красной» ветви. Это может быть хорошим способом организовать ревизии, особенно когда разные люди работают над разными ветвями, и вы позже захотите увидеть, откуда произошла ревизия. Но вы не хотите использовать его в своей ситуации.

Если вы используете hg update --rev 38 , то изменения 39–45 останутся тупиком - болтающейся головой, как мы это называем. При отправке вы получите предупреждение, так как вы создадите «несколько голов» в репозитории, в который отправляете. Предупреждение есть, потому что оставлять такие головы невежливо, поскольку они предполагают, что кому-то нужно выполнить слияние. Но в вашем случае вы можете просто пойти дальше и hg push --force , так как вы действительно хотите оставить его висеть.

Если вы еще не разместили ревизию 39-45 где-то еще, вы можете оставить ее закрытой.Это очень просто: с hg clone --rev 38 foo foo-38 вы получите новый локальный клон, который содержит только ревизию 38. Вы можете продолжить работу в foo-38 и продвигайте новые (хорошие) ревизии, которые вы создаете. В вашем клоне foo по-прежнему будут старые (плохие) версии. (Вы можете переименовывать клоны как хотите, например, foo в foo-bad и foo-38 в foo . )

Наконец, вы также можете использовать hg revert --all --rev 38 , а затем выполнить фиксацию. Это создаст ревизию 46, которая выглядит идентично ревизии 38. Затем вы продолжите работу с ревизии 46. Это не создаст вилку в истории таким же явным образом, как это было сделано hg update , но на С другой стороны, вы не получите жалоб на то, что у вас несколько голов. Я бы использовал hg revert , если бы я сотрудничал с другими, которые уже сделали свою собственную работу на основе ревизии 45. В противном случае hg update более явный.

400
ответ дан 23 November 2019 в 02:59
поделиться
Другие вопросы по тегам:

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