Я использую Подвижный локально для проекта (это - единственный repo еще нет никакого продвижения/получения по запросу к/отовсюду).
До настоящего времени это имеет линейную историю. Однако текущая вещь, я продолжаю работать, я теперь понял, ужасный подход, и я хочу вернуться к версии, прежде чем я запустил его, и реализуйте его другой путь.
Я немного перепутан с branch
/ revert
/ update -C
команды в Подвижном. В основном я хочу вернуться к версии 38 (в настоящее время на 45) и иметь мои следующие фиксации, имеют 38 как родитель и продолжаются оттуда. Я не забочусь, потеряны ли изменения 39-45 навсегда или заканчиваются в собственном тупиковом ответвлении.
Которые управляют / набор команд, мне нужно?
hg update [-r REV]
Если позже вы сделаете коммит, вы фактически создадите новую ветку. Тогда вы можете продолжить работу только с этой веткой или со временем объединить с ней существующую.
Вот шпаргалка по командам:
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
более явный.