Вот шпаргалка по командам:
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
является более явным.