Разница между Revert и Update в Mercurial

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

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

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

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

Однако эта операция не изменяется родительский пересмотр рабочего справочника (или пересмотра в случае uncommitted merge). Чтобы отменить uncomitted merge, вы можете использовать "hg update -C -r.", который будет resetродители к первому родителю.

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

Спасибо

Ответы

Ответ 1

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

если у нас есть ревизии (capts commit, нижний регистр - это изменения в рабочей копии, версия родителя - 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' (родительская версия остается неизменной на C)