Mercurial: отменить последнее изменение, чтобы база кода была чистой? - PullRequest
3 голосов
/ 19 ноября 2010

Я только что что-то напутал в Mercurial.

Как мне отменить последнее изменение, чтобы база кода была чистой - особенно, если кто-то еще сделает 'hg pull', он получитрабочая кодовая база?

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

Два способа:

hg rollback, как упомянуто Фредом;если ты уже нажал, слишком поздно.hg rollback подходит только для местного использования.hg strip (также как упомянуто Фредом) работает так же и (за исключением поддержки резервного копирования) эквивалентно выполнению hg rollback несколько раз, пока вы не вернетесь к этой ревизии.

hg backout для случаев, когда вы уже нажали и просто хотите отменить эффекты фиксации (если вы случайно вытолкнули конфиденциальные данные, вам нужно будет принять более решительные меры, но если вы просто хотитечтобы это работало, используйте это).

Если фиксация не является последней зафиксированной ревизией, скажите так, и мы можем углубиться (или выполнить поиск - на него уже был дан ответ).

2 голосов
/ 19 ноября 2010

Другой способ - клонировать из определенной ревизии.Скажем, регистрация 6 была ошибкой.Вы можете клонировать свой репозиторий до версии 5:

hg clone -r 5 myrepobad myrepoclean

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

1 голос
/ 19 ноября 2010
$ hg rollback --help
hg rollback

roll back the last transaction (dangerous)

    This command should be used with care. There is only one level of rollback,
    and there is no way to undo a rollback. It will also restore the dirstate at
    the time of the last transaction, losing any dirstate changes since that
    time. This command does not alter the working directory.

...

Вы также должны посмотреть на команду strip.

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