Разница между возвратом и обновлением в Mercurial - PullRequest
53 голосов
/ 24 марта 2010

Я только начинаю работать с Mercurial, и я столкнулся с чем-то, чего я не понимаю.

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

Насколько я понимаю, команда, которую я хочу, это revert .

На странице, на которую я ссылаюсь, есть следующее утверждение:

Эта операция, однако, не изменяется родительская ревизия рабочего каталог (или исправления в случае незафиксированное слияние). Отменить несвязанное слияние, вы можете использовать "HG обновить -C -r. ", который сбросит родители первому родителю.

Я не понимаю разницы между ними (hg revert против hg update -C -r). Может ли кто-нибудь объяснить мне разницу? И в моем случае, действительно ли я хочу, чтобы возврат или обновление избавились от изменений, которые я внес в файл?

1 Ответ

65 голосов
/ 24 марта 2010

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

если у нас есть ревизии (прописные буквы фиксируются, строчные буквы - это изменения в рабочей копии, родительская ревизия - C)

A-B-C-d

update -C -r B даст вам

A-B-C

с вашей рабочей копией, установленной на B, любые изменения приведут к переходу от B (родительская версия установлена ​​на B)

A-B-C
  \e

revert -r B даст вам

A-B-C-b'

где b '- это набор изменений, который отменяет все в промежуточных подтвержденных изменениях, в этом случае он отменяет все C. Все изменения теперь просто присоединяются к b' set (родительская ревизия оставлена ​​без изменений в C)

...