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