Разница между 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)